微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – 将通用值参数指定为对象初始化调用的参数

我有一个结构事件,它使用时间和值进行初始化.

value属性的类型在创建事件时确定.它可以是Int或Double基元之一.

我应该如何在Swift中实现它?

我希望能够像这样创建一个新的Event对象:

let event = Event(time: Date.init(),value: EventValue<Double>(40.3467))

我找到了this,但我无法解决.

我已经尝试了这么多的排列,我能做的最好的就是

struct Event {
  let time: Date
  var value: EventValue? // This line 'requires arguments in <...>'
}

struct EventValue <T> {
  let value: T?
}

解决方法

如果意图是具有EventValue属性的(单个)事件类型,该属性可以包含整数或双精度值,则具有关联值的枚举将用于此目的:

enum EventValue {
    case ival(Int)
    case dval(Double)
}

struct Event {
    let time: Date
    let value: EventValue
}

let event1 = Event(time: Date(),value: .dval(40.3467))
let event2 = Event(time: Date(),value: .ival(1234))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐