从IOS 10编程基础摘自:斯威夫特ExpressibleByIntegerLiteral - 究竟是如何工作的呢?
“因为鸟巢采用ExpressibleByIntegerLiteral,我们可以通过一个Int其中一个窝的预期,而我们的init(integerLiteral :)将被自动调用.....”
struct Nest : ExpressibleByIntegerLiteral {
var eggCount : Int = 0
init() {}
init(integerLiteral val: Int) {
self.eggCount = val
}
}
好了,所以我的问题是这样的...它是怎样到达自动调用虽然??当我试图弄清楚为什么时,我的逻辑碰到了一堵砖墙。从我所看到的,你可以说:
var eggie : Nest = 5
但是......好吧哪里是在等号后面的数字5是如何实际上是一个速记的逻辑:
var eggie : Nest = Nest(5)
又名“初始化一个新的实例的标准”的方式......
是不是只是一些深藏的ExpressibleByIntegerLiteral协议,正在处理这一转变里面?
感谢
的* *编译器变换'变种eggie:巢= 5'到'VAR eggie =巢(integerLiteral:5)' –