Swift 枚举案例的类型别名

Swift typealias for enum case

好的,我已经完成了作业并阅读了我能找到的内容,但我似乎无法找到是否可以使用 Swift 来完成。我有一个到处都在使用的枚举:SomeEnum 如果它是 cases 是一个冗长的 SomeEnum.SomeLengthyCaseName,我厌倦了在我的代码中看到它。我不想重构,因为我喜欢新人维护我的代码时案例的描述性。

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

enum SomeEnum {
    case SomeLengthyCaseName
}

typealias SLCN = SomeEnum.SomeLengthyCaseName

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

准备就绪,出发!

不可能,因为 SomeEnum.SomeLengthyCaseName 不是类型,它是 SomeEnum 类型的值。

那是 misleading error message

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

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

let SLCN = SomeEnum.SomeLengthyCaseName

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

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

let x: SomeEnum = .SLCN