Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift if case带有逻辑OR_Swift - Fatal编程技术网

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
语句有点奇怪。