下面是thermometer作为结构体的例子:

匿名网友 匿名网友 发布于: 2015-12-29 00:00:00
阅读 108 收藏 0 点赞 0 评论 0

public struct Thermometer { public var temperature: Double public init(temperature: Double) { self.temperature = temperature }}
创建一个thermometer实例对象,你可以使用下面的代码:

var t: Thermometer = Thermometer(temperature:56.8)
但是像下面的代码那样初始化对象是否会更好:

var thermometer: Thermometer = 56.8
能这样做吗?如果可以,怎么做?提示:it has to do with convertibles, but not convertibles like Camaros and Mustangs

答案:Swift 定义了下面的协议,这些协议可以使一种类型通过字面量的方式来初始化并赋值。

NilLiteralConvertibleBooleanLiteralConvertibleIntegerLiteralConvertibleFloatLiteralConvertibleUnicodeScalarLiteralConvertibleExtendedGraphemeClusterLiteralConvertibleStringLiteralConvertibleArrayLiteralConvertibleDictionaryLiteralConvertible
采用相应的协议并且提供一个允许字面量初始化的公用方法。在Thermometer类型的例子下,我们需要实现FloatLiteralConvertible协议,代码如下:

extension Thermometer : FloatLiteralConvertible { public init(floatLiteral value: FloatLiteralType) { self.init(temperature: value) }}
那么现在,你就可以通过一个简单的float数字创建一Thermometer对象,代码如下:

var thermometer: Thermometer = 56.8

评论列表
文章目录