2016-12-10 38 views
-1

假設我們有下面的結構圍繞的封閉包裝:是否可以從Swift結束生成一個唯一的散列?

public struct Task: Hashable { 

    pubic var closure: RateLimitedClosure 

    public var hashValue: Int { 
     // return unique hash 
     return 1 
    } 

    public static func ==(lhs: Task, rhs: Task) -> Bool { 
     return lhs.hashValue == rhs.hashValue 
    } 
} 

我想是的==函數返回true,如果倒閉是完全一樣的。

我就可以使用這個結構爲重點,以宣佈爲這樣一本詞典: var dict = [Task, (Date, RateLimitedClosure)]

+0

http://stackoverflow.com/questions/24111984/how-do-you-test-functions-and-closures-for-equality可能的副本 - 您*無法*比較關閉的平等。 –

回答

0

沒有語言結構,可以做到這一點。

我不知道這個問題是否已經很好的定義了。畢竟,閉包實際上只是一個函數指針和它捕獲的變量,對嗎?它很容易散列一個函數指針,但是對於閉包關閉的所有任意變量派生散列並不那麼容易。

相關問題