如何在 Swift 中设置内联数组类型?

问题描述 投票:0回答:2

例如,我有2个枚举:

enum MyEnum1WithLongName {
  case a, b, c, d, e
}

enum MyEnum2WithLongName {
  case a, b, c, l, p
}

我想创建与类型内联的数组,有些像这样:

if <MyEnum2WithLongName>[.a, .b, .c].contains(currentStatus) {
  // do something
}

而不是:

if [
     MyEnum2WithLongName.a, 
     MyEnum2WithLongName.b, 
     MyEnum2WithLongName.c
   ].contains(currentStatus) {
  // do something
}

但是我尝试创建这样类型的数组:

<MyEnum2WithLongName>[.a, .b, .c]

不适用于 Swift。我尝试搜索如何执行此操作,但只找到了如何创建数组类型的变量。如果您能帮助我解决这个看似简单但我自己无法弄清楚的问题,我将不胜感激。

swift generics
2个回答
1
投票

我想你正在寻找的是这个......

Array<MyEnum2WithLongName>(arrayLiteral: .a, .b, .c)

但这不是很标准。

你也可以做...

if [MyEnum2WithLongName.a, .b, .c].contains(currentStatus) {
  // do something
}

它会推断第一个之后的类型。


0
投票

也许有点做作,但如果您使用带有闭包的高阶函数,那么定义闭包的输入参数的类型就足以使编译器理解数组的类型

[.a, .b, .c].contains(where: { (value: MyEnum1WithLongName) in
    value == currentStatus 
}) 
© www.soinside.com 2019 - 2024. All rights reserved.