gpt4 book ai didi

swift - 为什么在递归 Swift 枚举中需要 indirect 关键字?

转载 作者:可可西里 更新时间:2023-10-31 23:49:18 28 4
gpt4 key购买 nike

我明白 indirect 的作用。我不明白的是为什么需要这个关键字。编译器没有足够的信息来自行解决这个问题吗?

enum Foo {
case Bar(Foo)
}

除非标记为indirect,否则上面的代码不会编译,但编译器已经可以检测到它是间接的,因为它再次使用相同的类型。即使我们做一些更复杂的事情,它也应该能够解决这个问题。

enum Foo {
case Bar(Baz)
}

enum Baz {
case Bob(Foo)
}

即使在这里,编译器也有足够的信息知道 FooBaz 是递归的。例如,Haskell 对于类似的递归类型不需要这样的关键字,因此显然可以将这样的东西构建到编译器中。

那么,为什么我们需要 indirect 关键字呢?

最佳答案

Swift 不想解决这个问题。它希望被明确告知,因此可以确定您编写的代码就是您想要编写的代码。

关于swift - 为什么在递归 Swift 枚举中需要 indirect 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35185525/

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