在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)
Swift不允许a的元素enum共享值.从"原始值"标题下的枚举文档(强调我的):
原始值可以是字符串,字符或任何整数或浮点数类型.每个原始值在其枚举声明中必须是唯一的.
这是解决它的另一种方法:
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)
| 归档时间: |
|
| 查看次数: |
8624 次 |
| 最近记录: |