是否可以从Swift闭包中生成唯一的哈希?

时间:2016-12-10 13:56:30

标签: swift swift3 closures hashable

假设我们有以下结构封装了一个闭包:

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

1 个答案:

答案 0 :(得分:0)

没有语言结构可以做到这一点。

我想知道这个问题是否定义得很好。毕竟,闭包实际上只是一个函数指针和它捕获的变量,对吧?它很容易散列一个函数指针,但它不容易为闭包关闭的所有任意变量派生哈希。