Int和Double在Swift中共享一个共同的父类

Int和Double在Swift中共享一个共同的父类,第1张

概述我想知道是否有一种更简单的方法将这两个初始化程序编写为通用的初始化程序 public required init(_ value : Double) { super.init(value: value, unitType: unit)}public required init(_ value : Int) { let v = Double(value) super.i 我想知道是否有一种更简单的方法将这两个初始化程序编写为通用的初始化程序
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中共享一个共同的父类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1042058.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存