Swift 1.0 or later
下面是thermometer作为结构体的例子:
1 2 3 4 5 6 | public struct Thermometer { public var temperature: Double public init(temperature: Double) { self.temperature = temperature } } |
创建一个thermometer实例对象,你可以使用下面的代码:
1 | var t: Thermometer = Thermometer(temperature:56.8) |
但是像下面的代码那样初始化对象是否会更好:
1 | var thermometer: Thermometer = 56.8 |
能这样做吗?如果可以,怎么做?提示:it has to do with convertibles, but not convertibles like Camaros and Mustangs
Swift 定义了下面的协议,这些协议可以使一种类型通过字面量的方式来初始化并赋值。
采用相应的协议并且提供一个允许字面量初始化的公用方法。在Thermometer类型的例子下,我们需要实现FloatLiteralConvertible协议,代码如下:
那么现在,你就可以通过一个简单的float数字创建一Thermometer对象,代码如下: