例如,我有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。我尝试搜索如何执行此操作,但只找到了如何创建数组类型的变量。如果您能帮助我解决这个看似简单但我自己无法弄清楚的问题,我将不胜感激。
我想你正在寻找的是这个......
Array<MyEnum2WithLongName>(arrayLiteral: .a, .b, .c)
但这不是很标准。
你也可以做...
if [MyEnum2WithLongName.a, .b, .c].contains(currentStatus) {
// do something
}
它会推断第一个之后的类型。
也许有点做作,但如果您使用带有闭包的高阶函数,那么定义闭包的输入参数的类型就足以使编译器理解数组的类型
[.a, .b, .c].contains(where: { (value: MyEnum1WithLongName) in
value == currentStatus
})