如何在一行中声明变量和枚举声明?

时间:2015-10-01 17:50:19

标签: ios swift2

有没有办法在Swift 2.0中将其简化为一行?

enum Direction {
    case Up
    case Down
}
var panDirection: Direction?

像这样的东西,它不起作用:

var panDirection = enum Direction {
     case Up
     case Down
 }

2 个答案:

答案 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)

不,必须先单独声明枚举类型,然后才能将其用作变量的类型。