我想得到Swift枚举对象的关联值,有没有一种方法比下面的switch语句更短/更好?

enum Test {
    case a(Int), b(Int), c(Int)
}

func printValue(_ t: Test) {
    switch t {
        case .a(let v), .b(let v), .c(let v): print("value \(v)")
    }
}

最佳答案

从多个枚举中提取关联值的代码是最经济、最容易读取的,不需要改进它。
但是,无论enum的情况如何,您都希望提取关联值的事实表明您没有正确地使用关联值:与其将值与每个单独的情况关联,不如创建一个包含Intenum而不包含assoc的复合类型。延迟值,即

enum Test {
    case a, b, c
}
class MyClass {
    var num : Int
    var tst : Test
}

现在关联的值是“outside”eachenum元素,可以独立于案例访问它,您也可以给它一个有意义的名称,这增加了程序的可读性。

10-08 07:22
查看更多