Swift枚举具有相同值的多个案例

Der*_*328 23 enums swift

在C中你可以让你的枚举有这个

typedef enum _Bar {
    A = 0,
    B = 0,
    C = 1
} Bar;
Run Code Online (Sandbox Code Playgroud)

在swift中,我想做同等的事情.但是编译器抱怨它不是唯一的.我如何告诉它我希望两个案例具有相同的价值?

enum Bar : Int {
    case A = 0
    case B = 0 //Does not work
    case C = 1
}
Run Code Online (Sandbox Code Playgroud)

我试过了

case A | B = 0
Run Code Online (Sandbox Code Playgroud)

case A, B = 0
Run Code Online (Sandbox Code Playgroud)

但它似乎不像我想要的那样工作.我感谢任何帮助.

Eon*_*nil 19

Swift不支持重复值.(或语义上的"别名")如果你不介意,你可以通过使用这样的东西来模仿它.

enum Foo: Int {
    case Bar = 0

    static var Baz:Foo {
        get {
            return  Bar
        }
    }
    static var Jar:Foo {
        get {
            return  Foo(rawValue: 0)!
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


str*_*ark 6

Swift不允许a的元素enum共享值.从"原始值"标题下的枚举文档(强调我的):

原始值可以是字符串,字符或任何整数或浮点数类型.每个原始值在其枚举声明中必须是唯一的.

  • 您可以随时创建常量类成员来构造别名值,如果这是您想要的 - 它们可以在构造函数和赋值中使用,但不能在switch语句中使用. (2认同)

coh*_*n72 6

这是解决它的另一种方法:

enum Animal {

  case dog
  case cat
  case mouse
  case zebra

  var description: String {
    switch self {
    case .dog:
      return "dog"

    case .cat:
      return "dog"

    case .mouse:
      return "dog"

    case .zebra:
      return "zebra"

    default:
      break
    }
  }
}
Run Code Online (Sandbox Code Playgroud)