我可以使用简单的Int创建结构的实例吗?

1 structure instance swift

以这种方式构建结构的实例是正确的吗?

public struct Barometer {
   public var pressure: Int
   public init(pressure: Int) {
      self.pressure = pressure
   }
} 

var barometer: Barometer = 80
Run Code Online (Sandbox Code Playgroud)

或者我需要采用协议?

Mar*_*n R 6

您可以通过采用IntegerLiteralConvertible 协议来实现这一目标:

extension Barometer: IntegerLiteralConvertible {
    public init(integerLiteral value: Int) {
        self.init(pressure: value)
    }
}
Run Code Online (Sandbox Code Playgroud)

现在Barometer可以从文字整数中实例化一个值:

let barometer: Barometer = 80
print(barometer) // Barometer(pressure: 80)
Run Code Online (Sandbox Code Playgroud)

但请注意,这仅适用于文字,而不适用于任意整数值:

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)
Run Code Online (Sandbox Code Playgroud)

对于Swift 3,替换IntegerLiteralConvertibleExpressibleByIntegerLiteral.