我有一个customMultiple函数,它接受2个值并将它们乘以多个,第一个值的类型是已知的,并且是一个Int,但是value2的类型是未知的,它可以是Int或CGFloat或。。。,Xcode出错,如何运行此功能?
func customMultiple<T: Numeric>(value1: Int, value2: T) -> T {
return T(value1) * value2
}
对于数字类型,只有一个容易犯错的初始化器init(exactly :):
init?<T>(exactly source: T) where T : BinaryInteger
您需要将Int或任何BinaryInteger强制转换为结果类型(Float,Double,Int或符合Numeric协议的任何数字类型)并将其相乘:
func customMultiple<T: Numeric, U: BinaryInteger>(value1: U, value2: T) -> T? {
guard let value1 = T(exactly: value1) else { return nil }
return value1 * value2
}
let test = customMultiple(value1: 256, value2: CGFloat(4)) // 1024
let test1 = customMultiple(value1: 256, value2: UInt8(4)) // nil
let test2 = customMultiple(value1: Int.max, value2: CGFloat(1)) // nil
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句