码迷,mamicode.com
首页 > 编程语言 > 详细

swift-闭包和类的声明

时间:2015-09-24 22:34:45      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

//闭包:类似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())

 

swift-闭包和类的声明

标签:

原文地址:http://www.cnblogs.com/popper123/p/4836639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!