2012-06-28 68 views
2

在Scala中,是否可以調用成員方法而無需調用其自身的實例?調用不帶'this'關鍵字的成員方法

例如,具有該類:

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 

但它有在調用成員方法的前面用一個詞的同樣的問題。

有沒有這樣做的選擇?

回答

8

是的,但你必須使用括號:

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

有關何時能或不能省略括號詳見this answer例如。

作爲一個側面說明,你也可以別名this如下:

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

,如果你想從一個嵌套的內部是指一類的this這往往是有用的,這是一個有點不是那麼詳細像在Java中一樣書寫Outer.this.x

相關問題