Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scala using final static variable


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"
}

Basically, how do I use Bar after I import Foo.Bar, do I really have to call Foo.Bar every single time?

like image 630
nobody Avatar asked Dec 02 '22 23:12

nobody


1 Answers

Secondary constructors have outer scope to prevent you doing something silly like this:

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

where you try to pass a parameter to the constructor...after creating it in the constructor.

Unfortunately, this means that import Foo.Bar is not in scope for that line. You'll have to use the full path Foo.Bar.

For everything in the class except the additional constructors, Foo.Bar will be in scope as Bar.

like image 120
Rex Kerr Avatar answered Dec 18 '22 09:12

Rex Kerr