我想编写一个通用函数,它将返回它的两个参数的总和,如下所示:
func add<T: ???>(left: T, right: T) -> T {
return left+right
}
当然,为了使用+
运算符,T
类型需要符合定义+
运算符的协议。
对于其他几个运营商,有内置协议 - 例如Equatable
为==
,Comparable
为<
,>
等。所有Swift内置&#34;算法& #34;类型如Double,Float,Int16等。
是否存在定义+
,-
,*
,/
运算符的标准协议,这些运算符由ALL&#34; arithmetic&#34;类型如Double,Float,Int,UInt,Int16等?
答案 0 :(得分:5)
图书馆里没有任何东西,我明白你的意思。你可以自己做:
protocol Arithmetic {
func +(lhs: Self, rhs: Self) -> Self
func -(lhs: Self, rhs: Self) -> Self
func *(lhs: Self, rhs: Self) -> Self
func /(lhs: Self, rhs: Self) -> Self
}
extension Int8 : Arithmetic {}
extension Int16 : Arithmetic {}
extension Int32 : Arithmetic {}
extension Int64 : Arithmetic {}
extension UInt8 : Arithmetic {}
extension UInt16 : Arithmetic {}
extension UInt32 : Arithmetic {}
extension UInt64 : Arithmetic {}
extension Float80 : Arithmetic {}
extension Float : Arithmetic {}
extension Double : Arithmetic {}
func add<T: Arithmetic>(a: T, b: T) -> T {
return a + b
}
add(3, b: 4)