gpt4 book ai didi

swift - 如何在 Swift 中定义递归数据结构

转载 作者:行者123 更新时间:2023-11-30 14:02:56 25 4
gpt4 key购买 nike

我正在尝试在 Swift 中创建类似 BNF 的 DSL。在 Scala 中,gll-combinators有一个很好的方法:

lazy val expr: Parser[Any] = (
"(" ~ expr ~ ")" ^^ { _ + _ + _ }
| ""
)

这将创建一个引用自身的解析器。

当我尝试在 Swift 中执行相同操作时(在类中使用 lazy var 或在函数中使用 @autoclosure),我得到一个“在其内部使用的变量”自己的初始值'错误。

举个简单的例子

class Node {
private var node: Node
init(node: Node) { self.node = node }
}

我想创建一个节点,其成员node指向self

lazy var node = Node(node) // error

有办法吗?

最佳答案

所以你想定义一个类,其中的属性引用self

也许是这样的?

class Node {
private var node: Node!

init(node: Node) {
self.node = node
}

init() {
self.node = self
}
}

现在你可以写:

let node = Node()

我必须将 node 属性设置为可选才能使其工作。

希望这有帮助。

关于swift - 如何在 Swift 中定义递归数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32771480/

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