swift 如何从枚举中获取case的关联值

oknrviil  于 2023-11-16  发布在  Swift
关注(0)|答案(1)|浏览(117)

如何在swift中从enum中获取case的关联值?我下面的代码看起来不错。但是我清理了getValue()?因为它必须是[String] return?

enum ColorName: {
    case naming([String])
    case rbg([String])

    var description: String {
        get { return String(describing: self) }
    }

    func getValue() -> [String] {
        switch self {
        case .naming(let num):
            return num
        case .rbg(let num):
            return num
        }
    }
}

let color = ColorName.naming(["blue", "red", "green"])
print(color.description) /// it should return naming since we return the name string
print(color.getValue()) /// get ["blue", "red", "green"]

字符串

pexxcrt2

pexxcrt21#

您可以将这两种情况合并结合起来-现在您只需要编写return num一次。

// also consider making this a property instead
func getValue() -> [String] {
    switch self {
    case .naming(let num), .rbg(let num):
        return num
    }
}

字符串
如果你的枚举只有这两种情况,我会把它写成一个带有[String]属性和枚举属性的结构。

struct Color {
    enum ColorType {
        case rgb
        case named
    }
    let type: ColorType
    let value: [String]
}

相关问题