bra*_*ipt 2 closures asynchronous ios swift swift3
我对转义和非转义闭包之间的区别的简要了解:
(我说对了吗?)
阅读更改日志和从Swift 2迁移@noescape到Swift 3的理由@escaping(在SE-0103中),您似乎可以异步分派非转义的闭包。
这是真的?可能?
您可以异步调度一个非转义的闭包函数吗?如果是这样,怎么办?
优点-我真的很想了解为什么同时存在转义和非转义的闭包:
@async而不是@escaping?我无法想到异步调度的函数如何不转义。提案中是否有具体说明建议?
关于您的其他问题:
- 是否存在实际的用例,用于异步调度非转义的闭包而不是转义的闭包?
这不可能,因此不会有用例:)
- 在设计建议中,它建议函数编程受益于默认情况下的非转义(读取:同步?)。这是真的?为什么?
该提案表示,减少重复的工作量(即必须将所有参数都标记为@noescape)将使函数式编程受益。由于函数式编程通常需要包含许多功能参数,而这些参数主要是不可转义的,因此此新的默认设置允许函数式算法具有更清晰,更整洁的签名,并减少了在@noescape各处的样板键入。
- 非转义的闭包和node.js中的promise是否有相似之处?
不,promise是异步的,将在Swift中使用转义的闭包而不是非转义的闭包实现。
- 如果我对所有这些都不对,为什么不直接将其命名为@async而不是@escaping呢?
因为它们不是完全相同的概念。逃避的闭包可以同步执行,但可以保存起来以备以后使用。 @async描述了执行的性质,但是@escaping仅意味着闭包将在传递给函数的函数返回后执行。当转义的闭包确实执行时,它可能在那时同步或异步执行。
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |