封闭为构造函数?

时间:2019-06-15 07:48:16

标签: ios swift

我已经在objc io书上看到了这样的示例

<Counter value={this.props.value} />

其中回调为

callback(Result {
    if let e = error {
       throw e
    }

    guard let d = data else {
       throw NoDataError()
    }

    return try JSONDecoder().decode(User.self, from: d)
})

似乎Result是Swift定义的枚举类型,它正在使用闭包创建自身?

但是我看不到任何有关此文件的信息

1 个答案:

答案 0 :(得分:3)

有一个文档。

该表达式表示init(catching:)Result方法的结尾闭包语法。描述是

  

通过评估引发的闭包,将返回的值捕获为成功或将任何引发的错误捕获为失败来创建新结果。

完整语法是

callback(Result(catching: {
    if let e = error { 
       throw e 
    }

    guard let d = data else { 
       throw NoDataError() 
    }

    return try JSONDecoder().decode(User.self, from: d)
    })
)

另请参阅Preserving the Results of a Throwing Expression