2012-03-22 10 views
4

class Foo(bar: String) { 
    import Foo.Bar 
    def this() = this(Bar) // this line fails, it seems I can only do 
         // def this() = this(Foo.Bar) 
} 

object Foo { 
    val Bar = "Hello Bar" 
} 

は基本的に、どのように私は私import Foo.BarBarを使用しない、最終的な静的変数使用して、私は本当に毎回Foo.Barを呼び出す必要がありますか?スカラ座、

答えて

13

セカンダリコンストラクタは、このような愚かな何かをするあなたを防ぐために、外側のスコープを持っています。

残念ながら、これはimport Foo.Barがその行の対象外であることを意味します。フルパスFoo.Barを使用する必要があります。

のすべてについては、を除き、Foo.BarBarの範囲になります。

5

クラス定義の外にインポートするとどうなりますか?

class Silly(foo: String) { 
    val bar = 123 
    def this() = this(bar.toString) 
} 

あなたは、コンストラクタにパラメータを渡すために...コンストラクタでそれを作成した後に試してみてください。

import Foo.Bar 

class Foo(bar: String) { 
    def this() = this(Bar) 
} 

object Foo { 
    val Bar = "Hello Bar" 
} 
関連する問題