Цепные тесты с логическим выражением - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь использовать 'boolean or' оператор case, но я не уверен в правильном синтаксисе.

enum FooBar {
  case foo
  case bar
  case nope
}

let test = FooBar.foo

guard case test = FooBar.foo else {
  return
}

Я также хотел бы проверить, не является ли bar следующее:синтаксис неверный, хотя:

guard case test = FooBar.foo || case test = FooBar.bar else {
  return
}

Ответы [ 4 ]

0 голосов
/ 25 февраля 2019

Нет необходимости использовать guard case, поскольку вы не используете сложное сопоставление с образцом, вы просто проверяете на равенство.

Вы можете просто поместить все enum дела в массиви назовите contains на этом.

guard [FooBar.foo, FooBar.bar].contains(test) else {
    return
}
0 голосов
/ 25 февраля 2019

Вы можете использовать contains:

guard [FooBar.foo, FooBar.bar].contains(test) else { return }
0 голосов
/ 25 февраля 2019

Вам не нужно ключевое слово case для чего-либо.Просто проверьте, равно ли enum данному регистру

guard test == .foo || test == .bar else {
    return
}
0 голосов
/ 25 февраля 2019

Вы можете использовать это вместо:

guard [FooBar.foo, FooBar.bar].contains(test) else {
    return
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...