gpt4 book ai didi

scala - 将私有(private)类实例作为构造函数参数

转载 作者:行者123 更新时间:2023-12-02 19:48:31 26 4
gpt4 key购买 nike

在具有内部类的 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
}

最佳答案

由于从外部无法看到Element,因此您应该在外部类的上下文中引用它

class MyStack[T] private (first: MyStack[T]#Element) {
class Element(val v: T, val next: MyStack[T]#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
}

关于scala - 将私有(private)类实例作为构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13307585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com