2

在 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

但是在调用成员方法之前必须使用一个词是相同的问题。

有没有办法做到这一点?

4

1 回答 1

8

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

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

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

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

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

如果您想从嵌套类内部引用一个类,这通常很有用this——它比Outer.this.x在 Java 中编写要简单一些。

于 2012-06-28T02:07:30.753 回答