gpt4 book ai didi

swift - Swift 中的 Java "equals"等价物

转载 作者:行者123 更新时间:2023-11-28 10:45:13 25 4
gpt4 key购买 nike

我正在寻找 Swift 中 Java 的“.equals”的精确等价物。

两个数据值 val1val2 被声明为 Any (也尝试过 AnyObject - 仍然没有成功) .如果数据是值类型或定义了 isEqual,则它们按值进行比较 (==),否则它们按引用进行比较 (===)。

我希望 == 这样做,但事实并非如此:编译器给出错误消息“无法应用二元运算符 ==”。

有什么办法可以实现吗?

最佳答案

I am looking for exact equivalent of Java's ".equals" in Swift.

您正在为此寻找错误的语言。而且我还认为您从错误的角度看待平等检查。

Swift 有 Equatable 类型的概念,它公开了 == 运算符,但是该运算符仅适用于相同类型的具体值,Any 不符合此条件。

Java 中的情况有些不同,其中 equals 几乎可以接收任何对象作为参数。这可能会导致一些有趣的场景,比如使 FileHandleHouse 相等,请不要试图说服我这实际上很有用,即使语言允许

Swift 的 Equatable 与 Java 的 equals 有一个巨大的优势:它保证在编译时你不会尝试比较不兼容的类型。现在您可能认为这比在 Java 中更严格,但这不一定是真的,因为在大多数情况下您不需要比较不同类型的值。

总而言之,如果您需要检查相等性,请使用 Equatable。使您的类型符合此协议(protocol),并实现 == 方法。让编译器完成剩下的工作。

关于swift - Swift 中的 Java "equals"等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48798312/

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