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