如何在swift中定义特定枚举大小写的数组



我想定义一个枚举用例,该用例由同一枚举的特定实例递归定义

enum Menu {
case item(String)
case submenu([.item]) // i want a submenu to be defined by an array of items
}

submenu的情况不正确:

case submenu([.item])

我怎样才能限制它?

enum的所有大小写都属于相同的enum类型,因此不能声明只能容纳枚举的特定大小写的Array

但是,您可以通过创建2个枚举而不是一个来实现目标,并使Menu.submenu枚举用例将另一个枚举作为其关联值。

enum Menu {
case item(MenuItem)
case submenu([MenuItem])
}
enum MenuItem {
case item(String)
}

然后你可以像一样使用它

let menu = Menu.item(.item("main"))
let submenu = Menu.submenu([.item("a"), .item("b")])

最新更新