2017-02-09 47 views
0

如何在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 
    ... 
} 

回答

1

在方括號內它

let comparator: (Int, Int) -> Bool = (<) 
+0

謝謝,現在我覺得自己很蠢。 –

+0

@ChristianSchnorr不要:)這一點都不明顯 – Alexander

+0

你知道是否有一種方法可以將它作爲該類型的屬性進行訪問?我猜'(<)'是指頂層包裝函數,而*不是* Int實際的靜態方法。 –