假设我们有以下结构封装了一个闭包:
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 :(得分:0)
没有语言结构可以做到这一点。
我想知道这个问题是否定义得很好。毕竟,闭包实际上只是一个函数指针和它捕获的变量,对吧?它很容易散列一个函数指针,但它不容易为闭包关闭的所有任意变量派生哈希。