将变量设置为运算符函数

Chr*_*ris 0 swift swift2

由于函数是 Swift 中的一等公民,我可以这样做:

func someFunc(arg: Int) -> Int { return 1}
let v = someFunc
let out = v(3)
Run Code Online (Sandbox Code Playgroud)

这按预期工作。但同样的事情不能应用于似乎有点奇怪的运算符,因为运算符实际上只是函数。

func +(lhs: Int, rhs: Int) -> Int { return 1}
let op = + // results in an error
Run Code Online (Sandbox Code Playgroud)

有没有实际的方法来完成将运算符分配给变量?或者是将运算符包装在另一个可以分配的函数中的唯一方法?

jtb*_*des 5

用括号将运算符括起来,并明确指定类型,允许它解析和类型检查:

let op: (Int, Int) -> Int = (+)
Run Code Online (Sandbox Code Playgroud)