我编写了一个库来使用Swift标准数字类型实现的协议。我还添加了一些运算符,在本例中为<
。这是代码:
public func < (lhs: NumberConvertible, rhs: NumberConvertible) -> Bool {
return lhs.toDouble() < rhs.toDouble()
}
/// Everything that is a number
public protocol NumberConvertible {
// MARK: - floating points
func toDouble() -> Double
func toCGFloat() -> CGFloat
func toFloat() -> Float
// MARK: - signed integers
func toInt8() -> Int8
func toInt16() -> Int16
func toInt32() -> Int32
func toInt64() -> Int64
func toInt() -> Int
// MARK: - unsigned integers
func toUInt8() -> UInt8
func toUInt16() -> UInt16
func toUInt32() -> UInt32
func toUInt64() -> UInt64
func toUInt() -> UInt
init(_ number: NumberConvertible)
}
Double
实现了NumberConvertible,似乎<
调用了自己,NumberConvertible
而不是Double
。我想在<
模块中使用Double
的标准Swift
运算符。那可能吗?如果需要更多代码,请检查here。我试过了Swift.<
,但这给了我一个语法错误。