2012-06-01 136 views
1

在Java中,我們可以通過方法擴展當前作用域,以便在this中引用變量(如果它被形式參數隱藏)。一個典型的例子就是我們做的構造函數:斯卡拉方式初始化成員?

class A { 
    int i; 
    A(int i) { this.i = i; } 
} 

現在,有Scala的任何類似的把戲?舉例來說,我有一個這樣的定義:

class A(i: Int) { 
    val i = i; // ? 
} 

一個平凡的解決辦法是重新命名的參數,其他的東西(像在C++使用下劃線)中的一個,但我想避免這種情況。

有沒有其他辦法呢?

在此先感謝!

回答

5

是不是完全一樣?然後,只需聲明它val(或var):

class A(val i: Int) {} 

這難道不是完全一樣?那麼你必須使用兩個名字。

+0

哇,酷,這是我正在尋找的斯卡拉魔法! :-) – rlegendi

+0

@rlegendi這可能是'case class(i:Int)'**不是**完全相同,因爲case類是類的超集,但更短,如果你有多個公有參數 –

+0

@ om-nom-nom Thx,我之前讀過關於案例類的內容,但我相信目前我並不需要所有這些功能來解決當前的問題。無論如何,謝謝你提到它! – rlegendi