在Swift 2中,有没有一种方法可以将其简化为一行?0?
enum Direction { case Up case Down } var panDirection: Direction?
像这样的东西,它不起作用:
var panDirection = enum Direction { case Up case Down }
lymgl2op1#
即使你能做到这一点,这些都是不一样的。enum是一个对象类型,类似于class。在第一个示例中,panDirection是Direction枚举的 instance。在第二个例子中,如果panDirection可以编译和运行,那么它最终会变成枚举 * 本身 *(类型,而不是类型的示例)--这根本不是你想要的。因此,您要做的是在行的中间 * 声明一个类型 *。你不能这么做关于在哪里可以声明类型的规则非常明确和严格。然而,请注意,你可以在另一个类型中声明一个类型,甚至是纯粹的本地类型,例如。例如,在函数的代码中。因此,例如,您可以临时声明类型,作为在函数内部传递数据的一种方式。疯狂但法律的:
enum
class
panDirection
func myCoolFunction(up:Bool) { enum Direction : String { case Up case Down } let dir : Direction = (up ? .Up : .Down) print("user wants \(dir)") }
nukf8bse2#
不可以,枚举类型必须单独声明,然后才能用作变量的类型。
qncylg1j3#
关键是要使用分号,不要忘记A的警句#3。玻璃:* 句法糖导致结肠癌:*
enum Direction { case Up; case Down }; var d = Direction.Up
3条答案
按热度按时间lymgl2op1#
即使你能做到这一点,这些都是不一样的。
enum
是一个对象类型,类似于class
。在第一个示例中,panDirection
是Direction枚举的 instance。在第二个例子中,如果panDirection
可以编译和运行,那么它最终会变成枚举 * 本身 *(类型,而不是类型的示例)--这根本不是你想要的。因此,您要做的是在行的中间 * 声明一个类型 *。你不能这么做关于在哪里可以声明类型的规则非常明确和严格。
然而,请注意,你可以在另一个类型中声明一个类型,甚至是纯粹的本地类型,例如。例如,在函数的代码中。因此,例如,您可以临时声明类型,作为在函数内部传递数据的一种方式。疯狂但法律的:
nukf8bse2#
不可以,枚举类型必须单独声明,然后才能用作变量的类型。
qncylg1j3#
关键是要使用分号,不要忘记A的警句#3。玻璃:* 句法糖导致结肠癌:*