Some Guy
Some Guy

Reputation: 16210

Shorter way to check multiple or conditions

Is there any easier way of checking one variables value against several others? Currently I'm using code like this:

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

Now, is there a shorter way to do this? I know I can use a switch, but then I'd have to write my function several times. Is there an easier way of doing this?

Upvotes: 6

Views: 1645

Answers (3)

Phrogz
Phrogz

Reputation: 303520

You do not need to write your function several times with a switch:

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

Amusingly, however, this is just about the same number of characters (depending on how you format it). A switch statement in general is less powerful than an explicit if statement, but in this case I find it clearer and less error-prone.

Upvotes: 5

Dave Newton
Dave Newton

Reputation: 160321

And better yet:

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

Move the logic out of the mainline code into an appropriately-named method.

This also lets you do your bounds checking there (if it isn't already guaranteed elsewhere).

Upvotes: 2

Raynos
Raynos

Reputation: 169541

No. However the following looks neater:

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

Upvotes: 1

Related Questions