PascalCaseKit

Languages my twitter

将 Swift 枚举的 rawValue 转换为 Pascal Case (帕斯卡命名法)。

原因

在 Swift 中,我们经常使用枚举来表示用 Pascal Case 定义的内容,例如颜色和图像资源。 为了实现这一点,我们必须手动覆盖编译器合成的 RawValue,因为它输出的是 Camel Case (驼峰命名法),这令人沮丧。

示例

enum Colors: String {
    case neonGreen = "NeonGreen"
}
👎

使用 PascalCaseKit, RawValue 会自动转换为 PascalCase。

enum Colors: String, PascalCaseRepresentable {
    case neonGreen
}

Colors.neonGreen.rawValue // NeonGreen
👍

设计决策

转换为 Pascal Case 应该对消费者完全透明。 期望的字符串必须通过 rawValue 访问,而不是通过一个新的变量。

局限性

由于上述核心设计决策,枚举 case 不能像通常那样选择覆盖 rawValue。 任何覆盖都会被忽略。

enum Colors: String, PascalCaseRepresentable {
    case neonGreen = "blue"
}

Colors.neonGreen.rawValue // NeonGreen
🤷