在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
但是在成员方法调用前必须使用单词也是同样的问题。
有选择吗?
答案 0 :(得分:8)
是的,但您必须使用括号:
object MyModel extends Model {
action("doSomething")
}
有关何时可以或不能省略括号的更多详细信息,请参阅this answer。
作为旁注,您还可以按如下方式对this
进行别名:
object MyModel extends Model { declare =>
declare action "doSomething"
}
如果你想从嵌套类中引用一个类this
,这通常很有用 - 它比编写Outer.this.x
更简洁,就像在Java中一样。