2016-12-10 16 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

これを行うことができます何の言語構造はありません。

この質問がよく定義されているのだろうかと思います。結局のところ、クロージャーは実際に関数ポインタとそれがキャプチャする変数です。関数ポインタをハッシュするのは簡単ですが、クロージャが閉じるすべての任意の変数に対してハッシュを導き出すのは簡単ではありません。

関連する問題