我想定义一个枚举用例,该用例由同一枚举的特定实例递归定义
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")])