2
class Thermometer{
var celsius: Float = _
def fahrenheit = celsius * 9/5 + 32
def fahrenheit_ = (f: Float) {
celsius = (f-32)*5/9
}
override def toString = fahrenheit + "F/"+ celsius + "C"
}
引用的代码是书Programming in Scala 2nd edition
中的一个示例。当我尝试编译时,出现以下错误:Scala的书中的隐式设置器和getter示例产生编译错误
scalac Thermometer.scala
Thermometer.scala:6: error: not found: value f
def fahrenheit_ = (f: Float) {
^
Scala不再支持隐式定义的getter和setters吗?代码中有错误吗?或者有没有新的方式来做到这一点?
哇!谢谢。我不知道这很重要。 (在5分钟内接受) – learner 2013-02-19 17:23:17
它很重要,因为=是方法名称的一部分。将_ =附加到方法名称表明它是一个设置器,它可以让你编写'x.setter = value',它将被转换为'x.setter _ =(value) – drexin 2013-02-19 17:54:29