[英]Escaping closure for operators in Swift
如何在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
...
}
放在方括號內
let comparator: (Int, Int) -> Bool = (<)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.