在这种情况下,为什么编译器需要显式的“ val”?

时间:2019-08-17 13:38:34

标签: scala

对于类Billamt未明确声明为val。编译时,我得到的错误是:

Error:(4, 52) value amt is not a member of Bill
   def compare(that: Bill): Int = (this.amt - that.amt)

代码:

import scala.math.Ordered

class Bill(amt : Int) extends Ordered[Bill] {
   def compare(that: Bill): Int = (this.amt - that.amt)
}

object Test extends App {
 val one = new Bill(10)
 val two = new Bill(20)
 println(one < two)

}

但是,如果我将class Bill(amt : Int)更改为class Bill(val amt : Int)(即将amt明确声明为val),就不会出现编译器错误。

Scala编译器:2.12.8

问题:

1)为什么显式需要val?默认情况下,变量为val。

2)在其他什么情况下,这种情况还会再次出现吗?

0 个答案:

没有答案