尝试初始化scala中的类时出错

尝试初始化scala中的类时出错,scala,scala-2.10,type-mismatch,Scala,Scala 2.10,Type Mismatch,我正在尝试创建一个类来添加有理数 class Rational(val numerator: Int, val denominator: Int) { require(denominator != 0) def this(numerator: Int) = this(numerator, 1) def +(addend: Rational): Rational = { new EquivalentRationals(this, addend).sum } def

我正在尝试创建一个类来添加有理数

class Rational(val numerator: Int, val denominator: Int) {
  require(denominator != 0)

  def this(numerator: Int) = this(numerator, 1)

  def +(addend: Rational): Rational = {
    new EquivalentRationals(this, addend).sum
  }

  def +(addend: Int): Rational =
    new Rational(numerator + (denominator*addend), denominator)

  override def toString = numerator + "/" + denominator
}

class EquivalentRationals(a: Rational, b: Rational) {
  val first: Rational =
    new Rational(a.numerator * b.denominator, a.denominator * b.denominator)

  val second: Rational =
    new Rational(b.numerator * a.denominator, b.denominator * a.denominator)

  def sum(): Rational =
    new Rational(first.numerator + second.numerator, second.denominator)

  def difference(): Rational =
    new Rational(first.numerator - second.numerator, second.denominator)

  override def toString = first + " " + second
}
当我尝试从第一个类中创建对象时,出现以下错误

:23:错误:类型不匹配; 发现:Rational(在对象$iw中)(在对象$iw中)(在对象$iw中)(在对象$iw中) 必需:Rational(在对象$iw中)(在对象$iw中)(在对象$iw中)(在对象$iw中) 新的等价项(此,加数).sum()

我想知道为什么会发生这种情况,我也非常感谢任何关于添加有理数的替代方法的建议,这些方法也使用一个单独的类来表示等价分数。(在《scala编程》一书中,有一个rational类已经实现了这一点,而没有使用单独的类)
编辑:只有在emacs中使用scala模式时,问题才会出现。我试图通过选择选项“在解释器中加载文件”来运行它,因此尽管它是通过命令行运行的,但我仍然很好奇为什么它在“低级scala”中不尝试将新的等价项(这个,加数).sum()更改为(新的等价项(这个,加数)).sum()您的scala版本是什么?在scala 2.10.1中对我有效。@SimonTodd:
新的等价项(这个,加数)。sum()
很好。@HerrChar:你确定吗?它有效:stdout—“3/2”。@HerrChar,我想你留下了一个有趣的问题没有问。这不是关于理性,而是关于我到底发生了什么。您是否可以编辑您的问题并将您的sbt构建、使用的ensime插件以及您向emacs发出的命令放入其中?