2011-12-31 13 views

答えて

21

いずれかTheClass.this.a、またはTheClassthisにエイリアスを与える(self、それを呼び出すことが通例である)

class TheClass { self => 
  val a = "abc" 
  val traitInstance = new TheTrait { 
  def a = self.a   
  } 
} 
+0

これは、外側のメンバーがクラスまたは特性に属している場合に機能します。私は関数ブロック内に導入された値を参照するために 'a'を望むならば、スコープを逃れる方法はないと思いますか?これらの値の名前を変更するだけです。 – akauppi

+0

'self'は' TheClass.this'よりも優れているようです。どちらがお勧めですか? – Jus12

1

外ヴァルス/ VARSは、ファンクションブロック内にある場合は、問題を乗り越えるための方法はにありますそれらを匿名クラスにラップし、特定の名前を付けます。 s.a.もちろん

val a=1 
val c = new { val a=a } // does not compile 

val s = new { val a=1 } 
val c = new { val a=s.a } // compiles :) 

また、単に別の名前を使用すると、トリックを行うだろうが、それはこれがそれらのための代替である_ $などと接頭辞/後に付けを意味する場合があります。

関連する問題