gpt4 book ai didi

closures - 如何测试函数和闭包的相等性?

转载 作者:行者123 更新时间:2023-11-30 13:26:18 25 4
gpt4 key购买 nike

The book says that "functions and closures are reference types".那么,如何判断引用是否相等呢? == 和 === 不起作用。

func a() { }
let å = a
let b = å === å // Could not find an overload for === that accepts the supplied arguments

最佳答案

Chris Lattner 在开发者论坛上写道:

This is a feature we intentionally do not want to support. There are a variety of things that will cause pointer equality of functions (in the swift type system sense, which includes several kinds of closures) to fail or change depending on optimization. If "===" were defined on functions, the compiler would not be allowed to merge identical method bodies, share thunks, and perform certain capture optimizations in closures. Further, equality of this sort would be extremely surprising in some generics contexts, where you can get reabstraction thunks that adjust the actual signature of a function to the one the function type expects.

https://devforums.apple.com/message/1035180#1035180

这意味着您甚至不应该尝试比较闭包是否相等,因为优化可能会影响结果。

关于closures - 如何测试函数和闭包的相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37155530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com