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

pab*_*sco 2 scala

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

例如,有这个类:

class Model {
    def action(value : String) = {
        // Do action
    }
}
Run Code Online (Sandbox Code Playgroud)

这个对象实现有效:

object MyModel extends Model {
    this action "doSomething"
}
Run Code Online (Sandbox Code Playgroud)

但我想做这样的事情:

object MyModel extends Model {
    action "doSomething"
}
Run Code Online (Sandbox Code Playgroud)

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

我设法为以下内容定义了一个别名this:

def declare = this
Run Code Online (Sandbox Code Playgroud)

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

有没有选择这样做?

Tra*_*own 8

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

object MyModel extends Model {
    action("doSomething")
}
Run Code Online (Sandbox Code Playgroud)

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

作为旁注,您还this可以使用以下别名:

object MyModel extends Model { declare =>
  declare action "doSomething"
}
Run Code Online (Sandbox Code Playgroud)

如果你想引用一个类的这往往是有用的this,从内部嵌套类,这是一个有点不是写那么详细Outer.this.x,你在Java中那样.