从数字Swift初始化一个类

时间:2016-03-22 11:44:03

标签: swift

基础框架中的一系列基本类可以通过简单地将基本数字分配给已知所需类型的值来实现,例如CGFloat

let a: CGFloat = 42

而不是像这样简单地使用init:

let a = CGFloat(42)

我的问题是,当结构或类实现此行为时,调用的是什么,以及如何为您自己的类实现它。

我不相信这是CGFloat属于别名的问题,我似乎无法找到合适的答案。

1 个答案:

答案 0 :(得分:1)

您的类型需要实施IntegerLiteralConvertible协议。

该协议要求您实现以下形式的构造函数:

init(integerLiteral value: Self.IntegerLiteralType) {}

示例:

struct MyCoolStruct {
    let value: Int
}

extension MyCoolStruct : IntegerLiteralConvertible {
    init(integerLiteral value: Int) {
        self.value = value
    }
}

let instance: MyCoolStruct = 3
instance.value