如何快速定义特定枚举案例的数组 [英] how to define an array of a particular enum case in swift

查看:63
本文介绍了如何快速定义特定枚举案例的数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to define an enum case which is recursively defined by a particular instance of the same enum

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

子菜单大小写不正确:

案例子菜单([.item])

如何限制它?

推荐答案

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

All cases of an enum are of the same enum type, so you cannot declare an Array that can only hold a specific case of an enum.

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

However, you can achieve your goals by creating 2 enums instead of one and making the Menu.submenu enum case take the other enum as its associated value.

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")])

这篇关于如何快速定义特定枚举案例的数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆