可失败的构造器(Failable Initializers)
Swift中有个概念,就是创建实例的时候如果条件不符合,可以返回一个nil对象。这类可以返回nil的构造器叫做可失败的构造器。语法是在init的前面加上一个?。当条件不满足的时候,你可以用 return nil结束构造方法。那么这时候得到的实例其实是一个nil,这里也说明了,可失败构造器返回的是可选类型。其实之前也说过,Swift的构造器是不需要返回值的。所以你成功的时候不需要写return什么东东。
值类型的可失败构造器
下面是structure的。
struct Apple {
var pricePerKg: Double
init?(pricePerKg: Double){
if pricePerKg < 0 {
return nil
}
self.pricePerKg = pricePerKg
}
}
print(Apple(pricePerKg: 2))
print(Apple(pricePerKg: -2))
//打印
//Optional(SwiftTest.Apple(pricePerKg: 2.0))
//nil