我可以使用简单的Int创建结构的实例吗? [英] May I create an instance of a structure using a simple Int?

查看:194
本文介绍了我可以使用简单的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆