1
在Scala中,可以在构造函数中定义类属性。但是一旦你声明了它们,就不可能再改变行为了(getters和setter),就像在类体中声明时一样?构造函数定义属性的Scala限制
例子:
class MyExample(var attribute : String)
{
def attribute() //trying to override getter <- doesn't work
}
class MyExample(theAttribute : String)
{
def attribute = theAttribute //overriding default accessor (was var)
}
如果这是不可能的,为什么会这样?当你向人们展示他们可以很容易地通过在构造函数中设置var或val来创建属性而不关心getter和setter(它们可以在需要时会改变)的情况下,最终发现实际上你应该避免使用这些属性便利的种类。
非常感谢您的出色答案。对于初学者来说不是那么明显,以至于你可以做这些事情,而书本通常只提供常见的情况。 – 2012-03-07 11:05:17