Больш за кароткі спосаб праверыць некалькі або ўмовы

Ці ёсць больш просты спосаб праверкі адной зменнай велічыні ад некалькіх іншых? У цяперашні час я выкарыстоўваю такі код:

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

Зараз, ёсць больш кароткі шлях, каб зрабіць гэта? Я ведаю, што магу выкарыстоўваць пераключэння , але тады я павінен быў бы напісаць свае функцыі некалькі разоў. Ці ёсць больш просты спосаб зрабіць гэта?

6

3 адказы

Вам не трэба пісаць сваю функцыю некалькі разоў з дапамогай перамыкача:

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.
}

Забаўна, аднак, гэта прыкладна такое ж колькасць сімвалаў (у залежнасці ад таго, як вы яго адфарматаваць). Заява перамыкача ў цэлым з'яўляецца менш магутным, чым відавочны , калі заяву, але ў гэтым выпадку я лічу яго больш выразным і меней схільныя памылак.

5
дададзена

А яшчэ лепш:

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

Перамясціць логіку з кода магістральнага ў адпаведным назве метадзе.

Гэта таксама дазваляе зрабіць вашыя праверкі межаў там (калі яна яшчэ не гарантаваная ў іншым месцы).

2
дададзена
Гэта, верагодна, павінен быць matchesAdjacent (а, я) .
дададзена аўтар RoToRa, крыніца
@RoToRa Лол, так. Выпраўлена - дзякуй.
дададзена аўтар Dave Newton, крыніца

Няма, але наступнае выглядае акуратней:

if(a[i] == a[i-13] || 
   a[i] == a[i+13] || 
   a[i] == a[i-1] || 
   a[i] == a[i+1]
) {
  //my code
}
1
дададзена