1
如果我有一個結構體,我可以實現ExpressibleByIntegerLiteral
以從整數文字中隱式創建它的實例。隱式強制轉換爲原語
struct MyStruct: ExpressibleByIntegerLiteral {
let value: Int
init(integerLiteral value: Int) {
self.value = value
}
}
let a: MyStruct = 1
尼斯。
有沒有辦法做相反的事,即從MyStruct
隱含轉換爲Int
?
我知道,我可以實現在Int
擴展的init方法來獲得明確的鑄造工作,像這樣:
extension Int {
init(_ myStruct: MyStruct) {
self = myStruct.value
}
}
let b = Int(a)
但有什麼我可以做的就是這一行編譯:
let c: Int = a
見http://stackoverflow.com/questions/24645798 /不,迅速支持隱式轉換 – courteouselk