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

fkaflof6  于 2023-04-30  发布在  Swift
关注(0)|答案(3)|浏览(354)

在Swift 2中,有没有一种方法可以将其简化为一行?0?

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

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

var panDirection = enum Direction {
     case Up
     case Down
 }
lymgl2op

lymgl2op1#

即使你能做到这一点,这些都是不一样的。enum是一个对象类型,类似于class。在第一个示例中,panDirection是Direction枚举的 instance。在第二个例子中,如果panDirection可以编译和运行,那么它最终会变成枚举 * 本身 *(类型,而不是类型的示例)--这根本不是你想要的。
因此,您要做的是在行的中间 * 声明一个类型 *。你不能这么做关于在哪里可以声明类型的规则非常明确和严格。
然而,请注意,你可以在另一个类型中声明一个类型,甚至是纯粹的本地类型,例如。例如,在函数的代码中。因此,例如,您可以临时声明类型,作为在函数内部传递数据的一种方式。疯狂但法律的:

func myCoolFunction(up:Bool) {
    enum Direction : String {
        case Up
        case Down
    }
    let dir : Direction = (up ? .Up : .Down)
    print("user wants \(dir)")
}
nukf8bse

nukf8bse2#

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

qncylg1j

qncylg1j3#

关键是要使用分号,不要忘记A的警句#3。玻璃:* 句法糖导致结肠癌:*

enum Direction { case Up; case Down }; var d = Direction.Up

相关问题