Более короткий способ проверки нескольких или условий - PullRequest
6 голосов
/ 28 октября 2011

Есть ли более простой способ проверки одного значения переменной на несколько других?В настоящее время я использую такой код:

if(a[i] == a[i-13] || a[i] == a[i+13] || a[i] == a[i-1] || a[i] == a[i+1]){
  //my code
}

Теперь, есть ли более короткий способ сделать это?Я знаю, что могу использовать switch , но тогда мне придется написать свою функцию несколько раз.Есть ли более простой способ сделать это?

Ответы [ 3 ]

5 голосов
/ 28 октября 2011

Вам не нужно писать свою функцию несколько раз с помощью переключателя:

switch(a[i]){
  case a[i-13]:
  case a[i+13]:
  case a[i-1]:
  case a[i+1]:
    // This code will run if any of the above cases are true.
}

Забавно, однако, это примерно одинаковое количество символов (в зависимости от того, как вы его отформатировали),Оператор switch в целом менее мощный, чем явный оператор if, но в этом случае я считаю его более четким и менее подверженным ошибкам.

2 голосов
/ 28 октября 2011

И еще лучше:

if (matchesAdjacent(a, i)) {
    // etc.
}

Переместите логику из основного кода в метод с соответствующим именем.

Это также позволяет вам выполнять проверку границ (если это не так).уже нигде не гарантировано).

1 голос
/ 28 октября 2011

Нет.Однако выглядит более аккуратно:

if(a[i] == a[i-13] || 
   a[i] == a[i+13] || 
   a[i] == a[i-1] || 
   a[i] == a[i+1]
) {
  //my code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...