在 Scala 项目的包中重写字符串 class 的 equals 方法
override equals method for string class in a package in a scala project
所以问题陈述如其所说。我想覆盖特定包中字符串 class 中 equals 的行为。
我环顾四周,大多数情况下似乎没有办法做到这一点。
我最接近在现有 class 上定义方法的是这个 -
implicit class StringImprovements(s: String) {
def increment = s.map(c => (c + 1).toChar)
}
然后像这样使用它 -
"HAL".increment
这真是太棒了。但是后来我尝试使用相同的方法覆盖 equals,但它不起作用。
我环顾四周,发现这个问题来自 2015 年 - override library method using Scala Implicit
引用上述问题中的一行 -
Implicits are used if scala compiler cannot find method without it, so you can`t override methods with implicits
但是考虑到 scala 的发布非常频繁并且事情一直在变化,我想知道现在是否可以通过这种方式或任何其他方式这样做。
提前致谢!
不,这不可能。如果是的话,我希望有很多库代码会被破坏,因为它期望 String#equals
!
的正常行为
所以问题陈述如其所说。我想覆盖特定包中字符串 class 中 equals 的行为。
我环顾四周,大多数情况下似乎没有办法做到这一点。
我最接近在现有 class 上定义方法的是这个 -
implicit class StringImprovements(s: String) {
def increment = s.map(c => (c + 1).toChar)
}
然后像这样使用它 -
"HAL".increment
这真是太棒了。但是后来我尝试使用相同的方法覆盖 equals,但它不起作用。 我环顾四周,发现这个问题来自 2015 年 - override library method using Scala Implicit
引用上述问题中的一行 -
Implicits are used if scala compiler cannot find method without it, so you can`t override methods with implicits
但是考虑到 scala 的发布非常频繁并且事情一直在变化,我想知道现在是否可以通过这种方式或任何其他方式这样做。
提前致谢!
不,这不可能。如果是的话,我希望有很多库代码会被破坏,因为它期望 String#equals
!