0

クロージャーをラップする次の構造体があるとします。

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)]

4

1 に答える 1

0

これを実行できる言語構造はありません。

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

于 2016-12-10T14:10:31.467 に答える