我可以使用简单的 Int 创建结构的实例吗?
May I create an instance of a structure using a simple Int?
这样制作结构实例对吗?
public struct Barometer {
public var pressure: Int
public init(pressure: Int) {
self.pressure = pressure
}
}
var barometer: Barometer = 80
或者我需要采用协议?
您可以通过采用 IntegerLiteralConvertible
协议:
extension Barometer: IntegerLiteralConvertible {
public init(integerLiteral value: Int) {
self.init(pressure: value)
}
}
现在 Barometer
值可以从文字整数实例化:
let barometer: Barometer = 80
print(barometer) // Barometer(pressure: 80)
但请注意,这仅适用于文字,不适用于任意
整数值:
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
.
这样制作结构实例对吗?
public struct Barometer {
public var pressure: Int
public init(pressure: Int) {
self.pressure = pressure
}
}
var barometer: Barometer = 80
或者我需要采用协议?
您可以通过采用 IntegerLiteralConvertible
协议:
extension Barometer: IntegerLiteralConvertible {
public init(integerLiteral value: Int) {
self.init(pressure: value)
}
}
现在 Barometer
值可以从文字整数实例化:
let barometer: Barometer = 80
print(barometer) // Barometer(pressure: 80)
但请注意,这仅适用于文字,不适用于任意 整数值:
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
.