You can make that work by adopting the IntegerLiteralConvertible
protocol:
extension Barometer: IntegerLiteralConvertible {
public init(integerLiteral value: Int) {
self.init(pressure: value)
}
}
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)
For Swift 3, replace IntegerLiteralConvertible
by
ExpressibleByIntegerLiteral
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…