有沒有辦法在Swift 2.0中將其簡化爲一行?如何在一行中聲明變量和枚舉聲明?
enum Direction {
case Up
case Down
}
var panDirection: Direction?
這樣的事情,這不工作:
var panDirection = enum Direction {
case Up
case Down
}
有沒有辦法在Swift 2.0中將其簡化爲一行?如何在一行中聲明變量和枚舉聲明?
enum Direction {
case Up
case Down
}
var panDirection: Direction?
這樣的事情,這不工作:
var panDirection = enum Direction {
case Up
case Down
}
即使你可以做到這一點,那些都是不一樣的。 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)")
}
不,枚舉類型必須另行申報,纔可以被用作一個變量的類型。