结尾闭包(trailing closure)和捕获数值(capturing values)

闭包的两个特性:结尾闭包(trailing closure)和捕获数值(capturing values)trailing closure现在还没有很好的中文翻译,trailing是结尾的,最后的的意思。所以暂时叫它结尾闭包。如图,我们对一个字符串数组进行排序,,在排序的过程中,越短的越靠前,如果长度一致的话,则按照字典序进行排序。在这样一种情况下,比较两个字符串的逻辑相对会比较复杂。面对这种比较复杂的逻辑,在小括号里面套一个大括号,会觉得非常的不自然。不仅如此,在括号匹配方面会比较容易出问题。为此,swift语言设计了一种机制。如果闭包是放在最后的话,在具体的调用时可以按图中方法写。这样写括号匹配不容易出错,而且和先前的效果是一样的。这样的写法就是trailing closure。在具体的IOS开发中还会遇到许多用到闭包的情况,并且闭包内执行的情况会非常复杂。比如,我们要执行一个动画,动画的函数后可能要传入一个闭包来完成动画结束后相应的动作。这个动作可能非常复杂。那么,我们用结尾闭包这种方法看起来会非常清晰。苹果中哪些函数需要用扫闭包,在ios开发中会慢慢了解。

第二个要讲的闭包的特性是capturing values,我们管它叫数值的捕获。

如图,这里已经使用了trailing closure的技术。其次,为了简洁起见,这里使用了 "$",这里比较的是整型数据和5之间的距离,离5越近的排在越前面。在闭包外面声明了num后,就可以在闭包里使用num。这里还有一些关于内存管理的话题,这些话题属于高级话题就先不讲了。

世界会向那些有目标和远见的人让路(冯两努–香港着名推销商

结尾闭包(trailing closure)和捕获数值(capturing values)

相关文章:

你感兴趣的文章:

标签云: