好了,我已经完成作业并阅读了可以找到的内容,但似乎无法找到使用Swift可以完成的任务。我有一个遍历整个地方的枚举:SomeEnum和一个case(如果它是SomeEnum.SomeLengthyCaseName)是一个冗长的typealias,我讨厌在我的代码中看到它。我不想重构,因为我喜欢新手维护我的代码时的描述性。

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

enum SomeEnum {
    case SomeLengthyCaseName
}

typealias SLCN = SomeEnum.SomeLengthyCaseName

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

预备,准备,开始!

最佳答案

那是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

关于ios - 枚举大小写的Swift Typealias,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32161457/

10-10 04:17