tags:

views:

43

answers:

1

So maybe I have this all wrong, but I'm sure there is a way to do this, say I have a an if statement, that I want to return true if all the conditions in an array evaluate as true.

say I have this:

def real_visitor?(location, request, params)

  valid_location = [
    params['referrer'] == 'us',
    params['bot'] != 'googlebot',
    5 + 5 == 10 
  ]

  if valid_location
    return true
  else
    return false
  end
end

How would I evaluate each of the conditions in the array valid_location, some of those conditions in that array are just pseudocode.

+4  A: 

Use Array#any? or Array#all?. It's like putting the || or && operator between all your conditions, but it doesn't do short-circuit evaluation, which is sometimes useful.

return valid_location.all?

You don't need the return keyword, by the way. I'd leave it out.

yjerem
In MRI 1.8.7, `all?` and `any?` short-circuit: `all?` stops at the first falsy value; `any?` stops at the first truthy value.
Wayne Conrad
yjerem
@yjerem, That makes perfect sense. Thanks for the great explanation.
Wayne Conrad