Swift if case带有逻辑OR
假设我们有一个枚举:Swift if case带有逻辑OR,swift,Swift,假设我们有一个枚举: enum MyEnum { case foo(Int) case bar } 我们可以这样做: func myFunc(_ foo: MyEnum, _ bar: MyEnum) { if case .foo(_) = foo, case .bar = bar {...} } enum MyEnum { case foo(Int) case bar } func myFunc(_ foo: MyEnum, _ bar: MyEnum, _
enum MyEnum {
case foo(Int)
case bar
}
我们可以这样做:
func myFunc(_ foo: MyEnum, _ bar: MyEnum) {
if case .foo(_) = foo, case .bar = bar {...}
}
enum MyEnum {
case foo(Int)
case bar
}
func myFunc(_ foo: MyEnum, _ bar: MyEnum, _ someVar: Bool) {
switch (foo, bar, someVar) {
case (.foo, .bar, _), (_, _, true):
break
default:
break
}
}
但是如果我需要这样的东西呢
if case .foo(_) = foo, case .bar = bar OR someVar == true {...}
其中我希望case.foo(u)=foo,case.bar=bar
为真,或者someVar
为真
显然,我不能把
|
放在那里,我也找不出替代方案。我是否遗漏了一些简单的内容?我不确定使用单个if语句是否可以实现这一点。但是,您可以使用如下switch语句:
func myFunc(_ foo: MyEnum, _ bar: MyEnum) {
if case .foo(_) = foo, case .bar = bar {...}
}
enum MyEnum {
case foo(Int)
case bar
}
func myFunc(_ foo: MyEnum, _ bar: MyEnum, _ someVar: Bool) {
switch (foo, bar, someVar) {
case (.foo, .bar, _), (_, _, true):
break
default:
break
}
}
我不确定用一个if语句是否可以实现这一点。但是,您可以使用如下switch语句:
func myFunc(_ foo: MyEnum, _ bar: MyEnum) {
if case .foo(_) = foo, case .bar = bar {...}
}
enum MyEnum {
case foo(Int)
case bar
}
func myFunc(_ foo: MyEnum, _ bar: MyEnum, _ someVar: Bool) {
switch (foo, bar, someVar) {
case (.foo, .bar, _), (_, _, true):
break
default:
break
}
}
所以,在你看来。。。这里的
|
(OR)操作数的左右参数是什么?可能与@holex重复:我编辑了这个问题以获得更多信息specific@Dávid Pászor,我不同意这是你指出的问题的重复。我没有试图缩写任何东西,在读了那个问题之后,我仍然想不出一个方法来做OR。@holex:你让我思考,如果我想让case.foo()=foo
为真,或者case.bar=bar或someVar==true
为真,那在你的思考中。。。这里的|
(OR)操作数的左右参数是什么?可能与@holex重复:我编辑了这个问题以获得更多信息specific@Dávid Pászor,我不同意这是你指出的问题的重复。我并没有试图缩写任何东西,在读了那个问题之后,我仍然想不出一个方法来做OR。@holex:你让我想,如果我想让case.foo()=foo
为真,或者case.bar=bar或someVar==true
为真,那会有用的@tonisuter。但在这种情况下,不能使用if
语句有点奇怪。谢谢@tonisuter,这样就行了。但是在这种情况下不能使用if
语句有点奇怪。