Swift学习之每日一tip (3)闭包
闭包介绍最近在学习swift的过程中,发现很多人都对于swift的闭包有很深的疑惑,今天就以我个人学习swift 1.2版本下的一些经验进行一些分享,如有错漏,望大家指出。 ps.《关于Swift学习之每日一tip》我这段时间会持续更新,而其中关于swift的内容都是在今年(2014)春节之后,苹果推出Xcode6.3测试版的之后推出的swift 1.2的语法,关于1.2与1.1的语法,我会在明天的内容中进行一下介绍。 通用闭包首先,给大家写一段常见的闭包代码 demo{ (name) -> () in println("(name): 完成了吗?") } 上面这个闭包实际上是闭包的一个回调,下面写出准备好的闭包的内容 func demo(finished:(name: String)->()) { println("小明正在玩命工作中... ") // 执行闭包,完成耗时操作后,做回调 let t = "大 BOSS" finished(name: t) } 执行结果: 小明正在玩命工作中... 大 BOSS: 完成了吗? 以上就是一个最常用的闭包,在这里,闭包实际上与Objective-c中的Block定义非常相似,都是先定义出后面准备好的闭包的内容,然后再在我们需要的地方进行闭包的调用,即可。 // 闭包的格式 /** { (参数) -> (返回值) in 代码实现 } */ 大家在初学闭包的时候,可以比照着这个格式来看闭包的调用,因为一般在调用的时候,闭包会更加的直观。
不知道通过上面的这些内容,大家对于闭包有没有一个初步的认识? 下面介绍一下闭包的一种常见简化写法: 尾随闭包实际上,第一次看到尾随闭包的时候,我并没有意识到这是一个闭包,因为他太简单了,简单到什么程度? demo2 { println("over" } 对,你没看错,就是这样。这就是一个尾随闭包的调用。 demo2 { () -> () in println("over") } 看到这里,相信聪明的同学已经猜出来了,这个尾随闭包顾名思义,如果闭包是最后一个参数,可以进行简化,当这个闭包里连参数都没有的话,我们就可以像上面那样写出如此简单的闭包调用。 func demo2(completion:()->()) { // 执行耗时操作 println("耗时操作") // 回调 completion() } 这个闭包就是符合我上面所说的闭包是最后一个参数,同时闭包里连参数都没有。 最后,我再简单说一下闭包的返回值: 闭包的返回值废话不多说,上代码: // 闭包的返回值 demo3 { () -> Int in return 10 } 在这里,大家似乎应该都发现了,我在写代码的时候都喜欢先写调用,再写闭包的内容,这里当然是为了大家方便理解,抛开语法的束缚,不喜勿喷哟~^_^。 func demo3(rowCount:()->Int) { // 通过闭包的返回值,获得数据信息 let count = rowCount() println("行数 (count)") // ... } 这么简单的过程,相信小伙伴们应该都不需要我再多废话了吧,今天就到这里,明天再见。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |