我想得到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
的情况如何,您都希望提取关联值的事实表明您没有正确地使用关联值:与其将值与每个单独的情况关联,不如创建一个包含Int
和enum
而不包含assoc的复合类型。延迟值,即
enum Test {
case a, b, c
}
class MyClass {
var num : Int
var tst : Test
}
现在关联的值是“outside”each
enum
元素,可以独立于案例访问它,您也可以给它一个有意义的名称,这增加了程序的可读性。