Gru*_*kes 11 xcode ios swift swift2
我正在尝试在Swift 2中尝试递归枚举,但是我遇到了编译错误.
我开始试图定义我自己的例子:
enum Tree {
case Empty
indirect case Node(value: Int, left: Tree, right: Tree)
}
Run Code Online (Sandbox Code Playgroud)
但是得到一个错误:"一行上的连续声明必须用:"分隔.
所以,我从他们的WWDC15尝试了Apple自己的例子.Swift 演示中的新功能:
enum Tree<T> {
case Leaf(T)
indirect case Node(Tree, Tree)
}
Run Code Online (Sandbox Code Playgroud)
但它也与此相同的编译错误.如果我创建一个新的游乐场并粘贴这些行,则会导致错误 - 请参阅屏幕截图,或者如果在Xcode项目中同样的话,请参阅其他截图.
我正在使用Xcode 7.0.
为什么我甚至无法获得Apple的编译示例?

Bre*_*ett 16
根据发行说明,Xcode 7 beta 4中添加了对此的支持,其中指出:
枚举和案例可以标记为间接,这会导致枚举的关联值间接存储,从而允许定义递归数据结构.
以下代码适用于Playground:
enum Tree {
case Empty
indirect case Node(value: Int, left: Tree, right: Tree)
}
let tree1 = Tree.Node(value: 0, left: Tree.Empty, right: Tree.Empty)
let tree2 = Tree.Node(value: 0, left: Tree.Node(value: -1, Tree.Empty, Tree.Empty), right: Tree.Empty)
Run Code Online (Sandbox Code Playgroud)
有趣的是,试图使用枚举switch工作正常,但使用新的Swift 2 if case语法反复崩溃Xcode并使Playground无法使用.我不确定这是与枚举有关还是只是一般的β不稳定性.
背景:
在最初询问此问题并接受此答案时,Xcode beta1是最新版本.Xcode 7 beta1-beta3不支持这一点,他们的发行说明包含以下措辞:
"间接"枚举元素尚未在此测试版中实现,它们将在稍后的更新中添加.
| 归档时间: |
|
| 查看次数: |
3448 次 |
| 最近记录: |