我可以使用简单的Int创建结构的实例吗? [英] May I create an instance of a structure using a simple Int?
本文介绍了我可以使用简单的Int创建结构的实例吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以这种方式创建结构实例是否正确?
Is it right to make a structure's instance this way?
public struct Barometer {
public var pressure: Int
public init(pressure: Int) {
self.pressure = pressure
}
}
var barometer: Barometer = 80
还是我需要采用协议?
推荐答案
您可以通过采用IntegerLiteralConvertible
协议:
You can make that work by adopting the IntegerLiteralConvertible
protocol:
extension Barometer: IntegerLiteralConvertible {
public init(integerLiteral value: Int) {
self.init(pressure: value)
}
}
现在可以从文字整数实例化Barometer
值:
Now a Barometer
value can be instantiated from a literal integer:
let barometer: Barometer = 80
print(barometer) // Barometer(pressure: 80)
但是请注意,这仅适用于文字,不适用于任意 整数值:
But note that this works only with literals, not with arbitrary integer values:
let p = 80
let barometer: Barometer = p
// error: cannot convert value of type 'Int' to specified type 'Barometer'
// You have to use:
let barometer = Barometer(pressure: p)
对于 Swift 3 ,将IntegerLiteralConvertible
替换为
ExpressibleByIntegerLiteral
.
这篇关于我可以使用简单的Int创建结构的实例吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文