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的代码,并且遗漏了将它们联系在一起的任何真实的东西.
看一下Swift标题:extension String : StringInterpolationConvertible { init(stringInterpolationSegment expr: String) init(stringInterpolationSegment expr: Character) init(stringInterpolationSegment expr: UnicodeScalar) init(stringInterpolationSegment expr: Bool) init(stringInterpolationSegment expr: float32) init(stringInterpolationSegment expr: float64) init(stringInterpolationSegment expr: UInt8) init(stringInterpolationSegment expr: Int8) init(stringInterpolationSegment expr: UInt16) init(stringInterpolationSegment expr: Int16) init(stringInterpolationSegment expr: UInt32) init(stringInterpolationSegment expr: Int32) init(stringInterpolationSegment expr: UInt64) init(stringInterpolationSegment expr: Int64) init(stringInterpolationSegment expr: UInt) init(stringInterpolationSegment expr: Int)}
同理:
func +(lhs: UInt8,rhs: UInt8) -> UInt8func +(lhs: Int8,rhs: Int8) -> Int8func +(lhs: UInt16,rhs: UInt16) -> UInt16func +(lhs: Int16,rhs: Int16) -> Int16func +(lhs: UInt32,rhs: UInt32) -> UInt32func +(lhs: Int32,rhs: Int32) -> Int32func +(lhs: UInt64,rhs: UInt64) -> UInt64func +(lhs: Int64,rhs: Int64) -> Int64func +(lhs: UInt,rhs: UInt) -> UIntfunc +(lhs: Int,rhs: Int) -> Intfunc +(lhs: float,rhs: float) -> floatfunc +(lhs: Double,rhs: Double) -> Doublefunc +(lhs: float80,rhs: float80) -> float80
如果可以为所有那些不同的数字类型编写一个通用函数,他们肯定会这样做.所以问题的答案必须是否定的.
(无论如何,他们很难共享父类,因为它们不是类.它们是结构.)
现在,当然,如果只有Int和Double有问题,你可以扩展Int和Double以采用通用协议并使该协议成为预期类型……
总结以上是内存溢出为你收集整理的Int和Double在Swift中共享一个共同的父类全部内容,希望文章能够帮你解决Int和Double在Swift中共享一个共同的父类所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)