我想知道是否有更简单的方法将这两个初始化器编写为泛型初始化器
public required init(_ value : Double) {
super.init(value: value, unitType: unit)
}
public required init(_ value : Int) {
let v = Double(value)
super.init(value: v, unitType: unit)
}
字符串
类似于:
public init<T>(_value : T) {
let v = Double(T)
super.init(value: v, unitType: unit)
}
型
(当然不能编译)
我已经看过Int和Double的代码了,我缺少任何将它们联系在一起的真实的东西。
2条答案
按热度按时间e1xvtsh31#
看看Swift的头文件:
字符串
同样:
型
如果有可能为所有不同的数值类型编写一个泛型函数,他们肯定会这样做。所以你的问题的答案肯定是否定的。
(And在任何情况下,它们几乎不能共享父类,因为它们不是类,而是结构。)
当然,现在,如果只有Int和Double有问题,* 你 * 可以扩展Int和Double来采用一个公共协议,并使该协议成为预期的类型。
cngwdvgl2#
您可以将类型
SignedNumeric
与any
关键字一起使用。Swift 5.9的例子:
字符串