调用不带'this'关键字的成员方法

时间:2012-06-28 01:57:03

标签: scala

在Scala中,是否可以调用成员方法而无需调用自身的实例?

例如,有这个课程:

class Model {
    def action(value : String) = {
        // Do action
    }
}

此对象实现有效:

object MyModel extends Model {
    this action "doSomething"
}

但我想做这样的事情:

object MyModel extends Model {
    action "doSomething"
}

与Java属性文件一样,因为它是定义对象状态的一种巧妙方法。

我设法为this定义了一个别名:

def declare = this

但是在成员方法调用前必须使用单词也是同样的问题。

有选择吗?

1 个答案:

答案 0 :(得分:8)

是的,但您必须使用括号:

object MyModel extends Model {
    action("doSomething")
}

有关何时可以或不能省略括号的更多详细信息,请参阅this answer

作为旁注,您还可以按如下方式对this进行别名:

object MyModel extends Model { declare =>
  declare action "doSomething"
}

如果你想从嵌套类中引用一个类this,这通常很有用 - 它比编写Outer.this.x更简洁,就像在Java中一样。