lea*_*vez 7 subscript throws swift
在 swift 中使用 @dynamicMemberLookup 时,subscript无法声明“抛出”。
subscript(dynamicMember member: String) -> Any
Run Code Online (Sandbox Code Playgroud)
还行吧。
subscript(dynamicMember member: String) throws -> Any
Run Code Online (Sandbox Code Playgroud)
这会产生编译错误。
该语言目前不支持使用throwsin 。subscript但是,您可以使用一些技巧来避免这种情况,同时保留以下功能throws:
public subscript(dynamicMember member: String) -> () throws -> Any {
return { try REAL_FUNCTION_THAT_THROWS() }
}
Run Code Online (Sandbox Code Playgroud)
只需声明订阅返回一个块,然后()在函数后面添加一个即可执行真正的函数。所以你可以这样编码:
@dynamicMemberLookup
class A {
public subscript(dynamicMember member: String) -> () throws -> Any {
return { try REAL_FUNCTION_THAT_THROWS() }
}
}
let a = A()
let value = try? a.doWhatYouWant()
let value2 = try? a.anotherMethod()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2142 次 |
| 最近记录: |