是可选的,闭包可以抛出,是的。 –本–中
是可选的,闭包可以抛出,是的。 但是,没有语言功能可用于处理回调中的错误。 让我解释:
想象一下,我将闭包传递给了进行网络调用的函数。 如果该网络调用失败(例如,我收到HTTP 503
),此功能将如何告诉我? 我看到三种方式:
- 回调有两个参数:成功值和错误值,两者都是可选的。 如果成功,则错误为
nil
;如果错误,则成功为nil
。 这是不理想的,因为两者都可能为nil
或都不为nil
,在这种情况下这是无意义的 - 该函数接受两个回调:一个在成功时传递值,一个在失败时传递错误值。 这样比较好,但是仍然可以同时调用两者,这是胡说八道。 另外,它体积大,并且没有利用Swift的闭包语言功能,例如在仅需要1个闭包的函数上省略括号。
- 回调采用一个参数,该参数是非可选的
Result
类型。 这是理想的,因为它永远不会同时具有成功或失败状态。 此外,您可以利用语言功能,例如省略括号和模式匹配。 同意,到今天为止,它体积很大。 但是,我看到了将来可以简化的一种方式,尤其是在标准库中提供了Result
时。
- AudioHardware.cpp:1200:AudioObjectRemovePropertyListener:AudioObjectRemovePropertyListener:没有给定ID 0的对象
- 如何检测iOS设备是否处于静音模式?
- iOS开发课程:后台模式(获取)
- 如何在iOS Swift中导入opencv2框架
- swift:如何截图AVPlayerLayer()
- UICollection View在较小的设备上导致“UICollectionViewFlowLayoutBreakForInvalidSizes”
- 迅速:在导航栏中设置后退button图像
- 如何使用Cocoapods安装Alamofire
- iOS Swift,使用标签更新tableview CellForRow之外的UITableView自定义单元格标签