有没有办法在Swift 2.0中将其简化为一行?
enum Direction {
case Up
case Down
}
var panDirection: Direction?
像这样的东西,它不起作用:
var panDirection = enum Direction {
case Up
case Down
}
答案 0 :(得分:3)
即使你能做到,那些根本就不一样了。 enum
是一种对象类型,如class
。在第一个示例中,panDirection
是Direction枚举的实例。在你的第二个例子中,如果它可以编译并运行,panDirection
最终将作为枚举本身(类型,而不是类型的实例) - 这根本不是你的想。
因此,您要做的是在一行中间声明一个类型。你不能这样做。您可以声明类型的规则非常清晰且非常严格。
但是,请注意,您可以在其他类型中声明类型,甚至是纯粹本地的类型,例如在函数的代码中。因此,例如,您可以临时声明类型,以便在函数内部传递数据。坚固但合法:
func myCoolFunction(up:Bool) {
enum Direction : String {
case Up
case Down
}
let dir : Direction = (up ? .Up : .Down)
print("user wants \(dir)")
}
答案 1 :(得分:0)
不,必须先单独声明枚举类型,然后才能将其用作变量的类型。