我有一个Event用时间和值初始化的结构。
该value属性的类型是在创建活动的时间决定。它可以是 anInt或Doubleprimitive 之一。
我应该如何在 Swift 中实现它?
我希望能够Event像这样创建一个新对象:
let event = Event(time: Date.init(), value: EventValue<Double>(40.3467))
Run Code Online (Sandbox Code Playgroud)
我找到了这个,但我无法弄清楚。
我已经尝试了很多这样的排列,我能做的最好的是
struct Event {
let time: Date
var value: EventValue? // This line 'requires arguments in <...>'
}
struct EventValue <T> {
let value: T?
}
Run Code Online (Sandbox Code Playgroud)
如果目的是拥有一个具有可保存整数或双精度值的属性Event的(单一)类型,则具有关联值的类型将达到此目的:EventValueenum
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))
Run Code Online (Sandbox Code Playgroud)