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