簡體   English   中英

在Swift中為操作員轉義轉義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM