对于类Bill
,amt
未明确声明为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)在其他什么情况下,这种情况还会再次出现吗?