Xcode 7 Beta 6 发布时,我一下子就被下面这三个特性迷住了:
还有一件事我没有发到推特上:我对 Swift 最大的改动——try?
关键字——很不理解。
Swift 新增一个关键字
try?
。try?
会试图执行一个可能会抛出异常的操作。如果成功抛出异常,执行的结果就会包裹在可选值(optional)里;如果抛出异常失败(比如:已经在处理 error),那么执行的结果就是nil
,而且没有 error。try?
配合if let
和guard
一起使用效果更佳。
>func produceGizmoUsingTechnology() throws -> Gizmo {...}>func produceGizmoUsingMagic() throws -> Gizmo {...}>>if let result = try? produceGizmoUsingTechnology() {return result}>if let result = try? produceGizmoUsingMagic() {return result}>print("warning: failed to produce a Gizmo in any way")>return nil>值得注意的是,
try?
总是给已经在求值的结果类型又增添一层Optional。如果一个方法正常返回的类型是Int?
,那么使用try?
调用这个方法就会返回Int??
或者Optional<Optional<Int>>
。(21692467)
我昨天发给