【发布时间】:2015-11-18 00:38:59
【问题描述】:
处理可能在Swift 中失败的init 的最佳方法是什么?例如,您创建了一个依赖于某个可能不可用的资源的类的实例。
显然我们有两个选择:
- 一个可保释的 init 返回 nil(Cocoa 方式)
- 引发错误的 init
见下文
enum ThingError: ErrorType{
case crap
}
class Thing {
init(c: Int) throws{
if c < 0 {
throw ThingError.crap
}
}
}
var c = try Thing(c: 3)
do{
var d = try Thing(c: -4)
}catch{
print("oh vey!")
}
有推荐的方法吗?第二个选项似乎更“Swifty”......
【问题讨论】: