gpt4 book ai didi

Scala:覆盖参数化类的equals函数的删除问题

转载 作者:行者123 更新时间:2023-12-04 17:58:08 27 4
gpt4 key购买 nike

我在理解如何使用 list 方面遇到了麻烦。

那是我的问题:
我创建了一个新的参数化类 C 并尝试像这样覆盖 equals:

override def equals(that:Any)=that match{
case that:C[T] => true /*do smth else not relevant*/
case _ => false
}

当然,我收到了“警告:类型模式 C[T] 中的非变量类型参数 T 未经检查,因为它被删除消除了”。我尝试使用 list ,就像我在许多其他功能中使用的一样:
override def equals(that:Any)(implicit manifest:Manifest[T])=that match{
case that:C[T] => true
case _ => false
}

但我收到了“错误:方法等于无覆盖”消息。

我不知道如何解决这个问题。有人可以帮我吗?

最佳答案

你无法修复它。欢迎享受与 java 顺畅互操作的乐趣。提高等于的唯一方法来自 def equals(x: Any): Boolean是写不同的方法。

我总是试图说服马丁我们应该以不同的方式实现 == 脱糖,目的是像“def DebenceEquals[T](x: T)(implicit equiv: Equiv[T])”这样的东西,使用默认的隐式和桥接方法来制作除非你关心,否则它是无缝的,但他认为平等测试不应该变得更慢。

关于Scala:覆盖参数化类的equals函数的删除问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4328008/

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