枚举案例的Swift类型

时间:2015-08-22 22:37:56

标签: ios swift syntax enums type-alias

好吧,我已经完成了我的作业并阅读了我能找到的内容,但我似乎无法找到是否可以通过Swift完成。我有一个我在整个地方使用的枚举:SomeEnum和一个如果case s是一个冗长的SomeEnum.SomeLengthyCaseName并且我厌倦了在我的代码中看到它。我不想重构,因为我喜欢新手维护我的代码的情况的描述性。

所以这就是问题:是否可以为typealias创建SomeEnum.SomeLengthyCaseName?如果是这样,怎么样?这是我尝试过的:

enum SomeEnum {
    case SomeLengthyCaseName
}

typealias SLCN = SomeEnum.SomeLengthyCaseName

这是语法,但Xcode给出了一个编译错误,说“SomeLenghtyCaseName不是SomeEnum的成员。”

准备好,开始吧!

2 个答案:

答案 0 :(得分:8)

那是misleading error message

真正的问题是SomeLengthyCaseName 不是类型 。因此,您无法使用typealias,这仅适用于类型的别名。 (例如,您可以说typealias SE = SomeEnum。)

相反,您可以使用全局常量:

let SLCN = SomeEnum.SomeLengthyCaseName

或者,更好的是,enum本身的静态常量:

enum SomeEnum {
    case SomeLengthyCaseName
    static let SLCN = SomeEnum.SomeLengthyCaseName
}

let x: SomeEnum = .SLCN

答案 1 :(得分:1)

由于SomeEnum.SomeLengthyCaseName不是类型,因此不可能,SomeEnum类型的值。