Grz*_* D. 7 generics swift swift2
我想写一个泛型函数,它将返回它的两个参数的总和,如下所示:
func add<T: ???>(left: T, right: T) -> T {
return left+right
}
Run Code Online (Sandbox Code Playgroud)
当然,为了使用+运算符,T类型需要符合定义+运算符的协议.
在其他几家运营商的情况下,有建于协议-例如Equatable为==,并Comparable为<,>等这些协议是由所有斯威夫特内置的"算术"类型,如双,浮法,Int16的采用等
是否有一个标准协议,定义+,-,*,/运营商,这是由ALL"算术"类型,如双,浮动,中等,UINT,Int16类型等通过?
图书馆里没有任何东西,我明白你的意思.你可以自己做:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
976 次 |
| 最近记录: |