Biketire Biketire - 3 months ago 7
Ruby Question

Can an "if (a == b || c == b)" statement be done shorter in Ruby

I have a piece of code in Ruby which goes as follows:

def check
if a == b || c == b
# execute some code
# b = the same variable
end
end


can this be written like

def check
if a || c == b
# this doesn't do the trick
end
if (a || c) == b
# this also doesn't do the magic as I thought it would
end
end


Or in a manner where I don't need to type
b
twice. This is out of laziness and I would like to know.

Answer
if [a, c].include? b
  # code
end

This is, however, significantly slower than the code you want to avoid -- at least as long as a, b and c are basic data. My measurements showed a factor of 3. This is probably due to the additional Array object creation. So you might have to weigh DRY against performance here. Normally it should not matter, though, because both variants do not take long.