swift - 是否可以在 Swift 中缩写此条件?

标签 swift enums conditional-statements operator-keyword

有没有办法在 Swift 中缩写以下类型的条件?

if ( (myEnum == .1 || myEnum == .2 || myEnum == .3 || myEnum == .8) && startButton.isSelected ) 

我试着输入:

if ( (myEnum == .1 || .2 || .3 || .8) && startButton.isSelected ) 

和:

if ( (myEnum == .1,.2,.3,.8) && startButton.isSelected )

但这些都不起作用。我也尝试查看文档,但找不到类似的示例。

谢谢!

最佳答案

我不认为有一种方法可以按照你想要的方式缩写它,但也许有另一种方法来处理同一件事......

extension YourEnum {
    var someCondition: Bool {
        switch self {
        case .1, .2, .3, .8:
            return true
        default:
            return false
        }
    }
}

通过这样做,您在调用站点的情况将变为...

if myEnum.someCondition, startButton.isSelected {
    doTheThing()
}

通过使用这种方法,您的代码也变得更具可读性。您现在可以为您的条件起一个其他开发人员(包括您 future 的自己)能够理解的合理名称。以前我不知道为什么选择这些案例。

它还允许您在多个地方使用此条件并且只有一个实现。因此,如果需求发生变化,您可以在一处进行更改。

关于swift - 是否可以在 Swift 中缩写此条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48706702/

相关文章:

swift - 如何在场景边缘停止 SKCameraNode

swift - 从枚举的一个子部分中选择一个随机值

objective-c - 如何像 Apple 在 Objective-C 中那样以 typedef 枚举为基础类行为?

scala - 检查我的枚举值中是否存在某些字符串,而没有NoSuchElement异常

java - 有不少于吗?

excel - Excel VBA中的IF语句中的多个条件 “end if without block if”“

Swift:UISegmentedControl 选定部分的背景颜色更改

swift - 应用程序在前台使用 CoreML,GPU 在前台,当应用程序转到后台时,无法切换到 CPU

javascript - 如何根据变量的值为 url 制定正确的条件? (javascript)

swift - CoreData/TableView - 'subscript' 的使用不明确