内部クラスを持つ Scala クラスで、そのクラスのインスタンスを引数として受け取るコンストラクターをどのように宣言できますか?
つまり、これは機能します
class Element[T](val v : T, val next : Element[T])
class MyStack[T] private (private val first : Element[T]) {
def this() = this(null)
def push(v : T) = new MyStack[T](new Element[T](v,first))
def pop() = new MyStack[T](first.next)
def top() = first.v
}
これはしません。
class MyStack[T] private (private val first : Element) {
private class Element(val v : T, val next : Element)
def this() = this(null)
def push(v : T) = new MyStack[T](new Element(v,first))
def pop() = new MyStack[T](first.next)
def top() = first.v
}