指定泛型值参数作为对象初始化调用的参数

eli*_*ght 5 generics swift

我有一个Event用时间和值初始化的结构。

value属性的类型是在创建活动的时间决定。它可以是 anIntDoubleprimitive 之一。

我应该如何在 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)

Mar*_*n R 2

如果目的是拥有一个具有可保存整数双精度值的属性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)