代码之家  ›  专栏  ›  技术社区  ›  Avba

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

  •  0
  • Avba  · 技术社区  · 5 年前

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

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

    这个 submenu 大小写不正确:

    case submenu([.item])

    我怎样才能限制它?

    1 回复  |  直到 5 年前
        1
  •  3
  •   Dávid Pásztor    5 年前

    所有案例 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")])