如何在Swift中存储用于评估运算符的函数的函数?
Int.<
和Int.`<`
似乎都没有为我编译。
对于字母数字函数名称,这很好用:
extension Comparable {
static func lessThan(_ lhs: Self, _ rhs: Self) -> Bool {
return lhs < rhs
}
}
let comparator = Int.lessThan
我知道我可以创建一个这样的新闭包,但我觉得必须有更优雅的方式:
let comparator: (Int, Int) -> Bool = {
return $0 < $1
}
请注意<
实际上是Swift 3中Comparable
的静态函数,而顶级运算符<
只是它的包装:
public protocol Comparable : Equatable {
...
public static func <(lhs: Self, rhs: Self) -> Bool
...
}
答案 0 :(得分:1)
在其周围放置括号
let comparator: (Int, Int) -> Bool = (<)