标签:
//闭包:类似Oc中的block 反向传值引起代码的回调
func hasClosureMathes(arr : [Int],value:Int,cb:(num:Int,value : Int)->Bool)->Bool{
for item1 in arr{
if cb(num: item1, value: value){
return true
}
}
return false
}
//in 是闭包的标志
var v1 = hasClosureMathes([1,2,3,4,43,12], 2) { (num, value) -> Bool in
if num < value{
return true
}else{
return false
}
}
println(v1)
//定义一个数组 里面string类型的人名,判断数组里面是否有一个叫小美的人,返回“大家好,我叫小美”如果没有返回“咦,怎么找不到小美”
func findXiaoMei(namelist:[String],name:String,condontion:(num:String,value:String)->Bool)->String{
for findName in namelist{
if condontion(num: findName, value: name){
return "大家好,我叫小美"
}
}
return "咦,怎么找不到小美"
}
var v2 = findXiaoMei(["小美","大黄","小明","小华"], "小美") { (num, value) -> Bool in
num == value//自动判断是true还是false
}
println(v2)
//如果闭包的代码块只有一句代码
var v3 = findXiaoMei(["小美","大黄","小明","小华"], "小啊", {
$0==$1
})
//$0表示传入的第一个参数,$1表示传入的第二个参数
println(v3)
//闭包在实际应用中都有哪些?
//数组的map属性,可以遍历数组,然后对其进行相应的操作
//泛型,比较抽象。它会根据你进行得操作作出判断给你返回相应的值。比如你进行+操作。他就会返回int的数组,如果进行>判断,他就会给你返回true或false的值
var numbers = [24,22,12,23,11]
let mapedNnumbers = numbers.map({
number in number < 10
})
println(mapedNnumbers)
let sortedNumbers = numbers.sorted({
$0<$1
})
println(sortedNumbers)
//总结函数和闭包的区别。
//本质都是一样的,引起代码的回调。只不过是,一个是直接调用函数名,闭包是直接传入代码块
//在完整的闭包写法中,加入func关键字,他就是一个函数
//函数去掉func 加上 in就会变成了闭包
//闭包可以省去参数列表和返回值,用$0 $1.... 代替
//类和对象
//类里面可以有常量,变量和函数
class shape {
var numberOfSide = 0
let defultDscription = "这是个??"
func simpleDiscription()->String{
return "the shape has\(numberOfSide)sides"
}
}
var s = shape()
println("\(s.simpleDiscription()) \(s.numberOfSide)")
class NameShip {
var numberOfSides = 1
var name:String
init(){
name = "形状"
}
init(name:String){
self.name = name
}
// deinit{
// 叫做析构函数,和OC的delloc用法差不多。作用是自动销毁不用的实例变量
// 里面需要写销毁对象
// }
func silmpleDiscription()->String{
return"\(name)has\(numberOfSides)sides"
}
}
//声明对象时,,类(初始化的参数)
var ss = NameShip(name: "有名字的形状")
ss.numberOfSides = 22
println(ss.name)
println(ss.silmpleDiscription())
标签:
原文地址:http://www.cnblogs.com/popper123/p/4836639.html