2015-08-21 23 views

Odpowiedz

3

Tak, to jest możliwe, po prostu nie może dać argumenty konstruktorów:

trait Bar extends Foo { ... } 

Ale instancję trzeba wywołać konstruktor także:

new Foo(false) with Bar 
2

Making ARG val wydaje się działać.

scala> class Foo(val b: Boolean) 
defined class Foo 

scala> trait Bar extends Foo {override val b = true} 
defined trait Bar 

To działa także jeśli popełnisz klasy A case class który automatycznie włącza args do Vals.

EDIT

Jak @Aleksey zauważył, to kompiluje, ale jest to cecha, która nie może być instancja tak, nie, to nadal nie wydaje się możliwe. Będziesz musiał sprawić, że Bar stanie się klasą.

scala> class Bar extends Foo(false) {println(b)} 
defined class Bar 

scala> new Bar 
false 
+0

można instancję to? –