当前位置: 首页 > 面试题库 >

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

高运诚
2023-03-14
问题内容

以这种方式构造结构实例是否正确?

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,请 替换IntegerLiteralConvertibleExpressibleByIntegerLiteral



 类似资料:
  • 本文向大家介绍创建一个类Person的简单实例,包括了创建一个类Person的简单实例的使用技巧和注意事项,需要的朋友参考一下 创建一个类Person,包含以下属性:姓名(name)、年龄(age)、朋友(friends数组)、问候(sayhi方法,输出问候语,例如:“你好!”)、交朋友(addFriend方法,向friends里添加一个值),然后创建两个此类的实例:“小张“,22,[“小李”,”

  • 我正在尝试查找相关的JPA文档,但很难找到任何指定是否允许我创建实体的ElementCollection的内容。我知道典型的用法是将@Embedded的@ElementCollection制作成一个@ElementCollection,但由于我遇到了一个Hibernate bug,我需要将我的可嵌入类制作成它自己的实体。 我希望实体的生命周期由父类控制。因此,我希望不要为新实体创建任何DAO/存储

  • 本文向大家介绍使用Keras构造简单的CNN网络实例,包括了使用Keras构造简单的CNN网络实例的使用技巧和注意事项,需要的朋友参考一下 1. 导入各种模块 基本形式为: import 模块名 from 某个文件 import 某个模块 2. 导入数据(以两类分类问题为例,即numClass = 2) 训练集数据data 可以看到,data是一个四维的ndarray 训练集的标签 3. 将导入的

  • 10.2.1 结构体工厂 Go 语言不支持面向对象编程语言中那样的构造子方法,但是可以很容易的在 Go 中实现 “构造子工厂”方法。为了方便通常会为类型定义一个工厂,按惯例,工厂的名字以 new 或 New 开头。假设定义了如下的 File 结构体类型: type File struct { fd int // 文件描述符 name string // 文

  • 问题内容: 代码示例: 是否可以创建名称为Bar的类的新实例?我尝试使用: 它找到该类,但是当我使用c.newInstance()时,它将引发InstantiationException。 问题答案: 您需要跳过几个步骤才能做到这一点。首先,您需要使用Class.getConstructor()查找要调用的对象: 返回一个构造函数对象,该对象反映此Class对象表示的类的指定公共构造函数。para