尝试初始化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发出的命令放入其中?