從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)' –