Swift - 是否有一个定义+, - ,*,/函数的标准协议,它被Double,Float,Int等所有"算术"类型采用?

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类型等通过?

Kam*_*xom 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)
Run Code Online (Sandbox Code Playgroud)

  • 是的,我已经写了完全相同的东西:)但是,在我看来,这是真正应该包含在标准库中的那些东西之一.特别是当Apple喜欢将Swift称为_Protocol Oriented Programming Language时;) (2认同)