Generics CGFloat:浮点时调用rintf(),双精度时调用rint()
当体系结构为32位时,CGFloat为Float。 在这种情况下,我想调用Generics CGFloat:浮点时调用rintf(),双精度时调用rint(),generics,swift,cgfloat,Generics,Swift,Cgfloat,当体系结构为32位时,CGFloat为Float。 在这种情况下,我想调用rintf() 当体系结构为64位时,CGFloat为双精度。 在这种情况下,我想调用rint() 我目前正在执行一个转换,以加倍,然后调用rint() 或许泛型可以很好地处理这两种情况?尽管必须打开参数类型并提供默认情况是很糟糕的 func round<T: FloatingPointNumber>(value: T) -> T { switch value { case let value a
rintf()
当体系结构为64位时,CGFloat为双精度。
在这种情况下,我想调用rint()
我目前正在执行一个转换,以加倍,然后调用rint()
或许泛型可以很好地处理这两种情况?尽管必须打开参数类型并提供默认情况是很糟糕的
func round<T: FloatingPointNumber>(value: T) -> T {
switch value {
case let value as Float:
return rintf(value) as T
case let value as Double:
return rint(value) as T
default:
return 0.0 as T
}
}
协议定义是可选的,但似乎是瑞士式的
func round<T: FloatingPointNumber>(value: T) -> T {
switch value {
case let value as Float:
return rintf(value) as T
case let value as Double:
return rint(value) as T
default:
return 0.0 as T
}
}
protocol Roundable {
typealias NumberType
func Round() -> NumberType
}
extension Float: Roundable {
func Round() -> Float {
return rintf(self)
}
}
extension Double: Roundable {
func Round() -> Double {
return rint(self)
}
}