小编ald*_*ski的帖子

Scala3 基本类型和覆盖的扩展 ==

学习 Scala3 扩展和 CanEqual 概念,但发现扩展 Int 的某些特性有困难。

在以下示例中,我可以轻松地向 Int 添加 >= 功能以将其与 RationalNumber 案例类进行比较,但无法修改 == 的行为。(注 1~2 与 RationalNumber(1,2) 相同)。

这个问题似乎与基本的 AnyVal 类型以及 Scala 如何传​​递给 Java 来处理 equals 和 == 相关。

case class RationalNumber(val n: Int, val d: Int):
  def >=(that:RationalNumber) = this.num * that.den >= that.num * this.den
  //... other comparisons hidden (note not using Ordered for clarity)
  private def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b)
  val sign = …
Run Code Online (Sandbox Code Playgroud)

extension-methods scala equals dotty scala-3

4
推荐指数
1
解决办法
72
查看次数

标签 统计

dotty ×1

equals ×1

extension-methods ×1

scala ×1

scala-3 ×1