【发布时间】:2017-12-10 22:41:19
【问题描述】:
我希望能够在我的 swift 代码中使用一些自定义类型对 Double 进行子类化,以便稍后进行一些自省和运算符重载。
这在语义上是我希望能够写的:
class Frequency: Double {}
class Period: Double {
init(_ frequency: Frequency) {
let period: Double = 1 / frequency
self.init(period)
}
}
let a = Double(1)
print(type(of: a)) // Double
let b = Frequency(2)
print(type(of: b)) // Frequency
let c = Period(a)
print(type(of: c)) // Period == 1
let d = Period(b)
print(type(of: d)) // Period == 0.5
感觉我想做的事情应该是可行的,因为 Swift 是一种严格类型的语言。
我也看过类型别名,但你不能用这些来重载运算符。还查看了 FloatingPoint 协议,但似乎对我没有帮助。
【问题讨论】:
-
Double是一个结构体,不能扩展。 -
@rmaddy 不幸的是没有。我想知道是否有不同的方法。也许是协议?
标签: swift types operator-overloading subclassing