在帶有內部類的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
}
你究竟打算如何在MyStack之外實例化該類? '私人'修飾符直接抵觸你的目的 –
呃......那裏有一個清晰可見的默認構造函數。 – Cubic
哦,對。抱歉。您應該嘗試將'Element'放入伴侶對象中。但無論如何,這整個設計充滿了不合理的非常規決策:數十年前的古典「鏈表」的過度複雜的'null','Element' - 方法。我的意思是爲什麼不用'class MyStack [T](first:T,rest:MyStack [T])''沒有多餘的'Element'包裝?這個程序絕對需要審查我肯定會導致消除當前問題。 –