swift枚举在单个开关案例中获得具有相同参数的多个案例的关联值

文森特·贝

这是带有关联值的常见枚举。

enum MultiplierType {
    case width(Double)
    case height(Double)
    case xxxxx1(Double)
    case xxxxx2(Double)
    case xxxxx3(Double)

    var value: Double {
        switch self {
            // Normal way.
            case let .width(value):
                return value
            case let .height(value):
                return value
            case let .xxxxx1(value):
                return value
            ...
        }
    }
}

我的问题是怎么做?

var value: Double {
    switch self {
    // How to get the value in one case?
    case let .width(value), .height(value), .xxx:
         return value
    }
}

要么

var value: Double {
    switch self {
    // How to get the value in one case?
    case let .width, .height, .xxx (value):
         return value
    }
}

获得相关价值的最优雅方法是什么?

瓦瓦瓦玛

你可以把多个枚举值在同一case行,但你必须移动let()

var value: Double {
    switch self {
    case .width(let value), .height(let value), .xxxxx1(let value):
         return value
    }
}

您可能需要将每个enum值放在单独的行上:

var value: Double {
    switch self {
    case .width(let value),
         .height(let value),
         .xxxxx1(let value):
         return value
    }
}

不幸的是,这与enum带有关联值的s一样优雅如果没有显式列出enums ,就无法获得关联的值

您只能在同一行中合并具有相同类型关联值的值,并且所有值都必须绑定到相同的变量名。这样,在下面的代码中,value无论enum匹配哪种模式,您都知道绑定了,它的类型是什么

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

宁静:同一资源的多个案例(相同的api端点?)

在Swift中枚举多个具有相同值的案例

复合转换案例:对于具有相同类型关联值的复合枚举案例,我们可以有一个公共值绑定吗?

如何在Swift 4中测试枚举案例与关联值的等效性

在F#中,是否可以限制单个案例区分联合中的值范围?

计算R中多个单独案例的单个案例中两个观察值之间的差异

转换语句-单个案例有多个结果

具有相同表达式的多个案例陈述

具有相同案例名称的枚举以及具有不同类型的关联值

C#8开关表达式具有相同结果的多个案例

具有相同变量的枚举案例

使用GCC开关案例范围,是否可以构建范围为[A-Za-z]的单个案例?

对两个案例标签使用相同的值与对单个案例使用多个案例标签有什么区别?

在一个案例中有多个选项,然后在案例中循环

检查枚举值-替代30个案例的开关案例?

Azure逻辑应用程序-如何为案例添加具有多个值的开关案例

将一个案例类转换为具有相同结构但具有一个附加字段的另一个案例类

switch语句中具有相同别名的多个案例

Switch语句中单个案例中的多个条件

Matlab开关案例中的Java枚举

SML:多个案例陈述

MATLAB:在 switch 中运行多个案例

使用多个案例是 <>

模式匹配具有相同动作的多个案例

如何获得具有多个案例的动画函数,这些案例控制 Javascript 中的 CSS 值以进行渲染?

Switch 语句包含多个具有相同标签值的案例,除非它没有

Ocaml 中是否有单个案例变体的用例?

多个案例标准

是否可以将多个案例分组并表示为 Swift 枚举中的另一个案例?