gpt4 book ai didi

带有循环的Scala不可变链表

转载 作者:行者123 更新时间:2023-12-01 09:17:48 25 4
gpt4 key购买 nike

在 Scala 中,我需要用循环创建一个不可变的链表。就像是:

case class Node(element: Int, next: Node)
val linkedList = Node(1, Node(2, null))
val cycle = Node(3, cycle)

cycle.next // this should go back to the same element

但它不起作用。如何使用循环制作不可变链表?

最佳答案

使用惰性值和按名称参数来推迟初始化:

class Node(val element: Int, next_ : => Node) {
lazy val next = next_
}

lazy val root: Node =
new Node(1,
new Node(2,
new Node(3, root)
)
)

// tail-recursive print function as a bonus
def printRec(node: Node, depth: Int): Unit = if (depth > 0) {
println(node.element)
printRec(node.next, depth - 1)
}

printRec(root, 10)

输出:
1
2
3
1
2
3
1
2
3
1

关于带有循环的Scala不可变链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39715534/

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