在大多数情况下 return 值相似时,如何使用 enum-switch 优化我的代码?

How can I optimize my code using enum-switch when return values are similar in most cases?

我有一个枚举和一个包含所有情况的开关,我在自定义函数中使用这个开关,在大多数开关情况下我返回相同的值,我想优化我的代码以减少和尽可能简洁的代码。保留并使用枚举和开关。

enum Test {
    case a, b, c, d, e, f, g, h, i
}


func testFunction(value: Test) -> Int {
    switch value {
    case .a: return 1
    case .b: return 1
    case .c: return 1
        
    case .d: return 2
    case .e: return 2
    case .f: return 2
        
    case .g: return 3
    case .h: return 3
    case .i: return 3
    }
}

你可以这样写你的枚举:

enum Test {
    case a, b, c, d, e, f, g, h, I

    var value: Int {
     switch self {
      case .a, .b, .c: return 1
      case .d, .e, .f: return 2
      case .g, .h, .i: return 3
     }
    }
 }

使用逗号:

func testFunction(value: Test) -> Int {
    switch value {
    case .a, .b, .c: return 1
        
    case .d, .e, .f: return 2
        
    case .g, .h, .i: return 3
    }
}

如果您的案例是按顺序排列的,您可以使您的枚举符合 Comparable 并执行

func testFunction(value: Test) -> Int {
    switch value {
    case .a...(.c): return 1
    case .d...(.f): return 2
    default: return 3
    }
}