Boo*_*unz 0 enums conditional-statements operator-keyword swift
有没有办法在Swift中缩写以下类型的条件?
if ( (myEnum == .1 || myEnum == .2 || myEnum == .3 || myEnum == .8) && startButton.isSelected )
Run Code Online (Sandbox Code Playgroud)
我试着输入:
if ( (myEnum == .1 || .2 || .3 || .8) && startButton.isSelected )
Run Code Online (Sandbox Code Playgroud)
和:
if ( (myEnum == .1,.2,.3,.8) && startButton.isSelected )
Run Code Online (Sandbox Code Playgroud)
但这些都没有奏效.我也试过看文档,但找不到类似的例子.
谢谢!
我不认为有一种方法可以像你想要的那样缩写它,但也许有另一种方法来接近同样的事情......
extension YourEnum {
var someCondition: Bool {
switch self {
case .1, .2, .3, .8:
return true
default:
return false
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过这样做,您在呼叫站点的条件变为......
if myEnum.someCondition, startButton.isSelected {
doTheThing()
}
Run Code Online (Sandbox Code Playgroud)
通过使用这种方法,您的代码也变得更具可读性.您现在可以为您的条件提供一个合理的名称,其他开发人员(包括您未来的自己)将能够理解.以前我不知道为什么选择这些案件.
它还允许您在多个位置使用此条件,并且只有一个实现.因此,如果需求发生变化,您可以在一个地方进行更改.
if [.a, .b, .c, .d].contains(myEnum) && startButton.isSelected {
// etc.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |