Beginning Ruby Question:
I’m trying to see if a string variable’s contents is either “personal” “email” or “password”.
I’m trying:
if params[:action] == "password" || "email" || "personal"
foo
else
don't foo
end
But that doesn’t work and returns strange results, and using IRB to play around with “or” statements I have no idea why the following happens:
irb(main):040:0> a = "email"
=> "email"
irb(main):041:0> a == "password" || "email"
=> "email"
irb(main):042:0> a == "email" || "password"
=> true
I just want something that if any of the 3 variables are true no matter what order they are in it returns true, if not it returns false. Anyone want to help this n00b out?
You’ll want to do this:
Programming languages aren’t like English: it has a strict grammatical rule, and instead of saying:
in most programming languages, you have to say:
Similarly, where as it’s common in mathematical notation to say:
in most programming languages, you have to say:
Let’s see what happens with your experiment:
Due to what is called “operator precedence”, this is parsed as:
Now, since
a == "email", this essentially evaluates to:which is why this expression evaluates to
"email".Similarly, with:
This is essentially
and that’s why it evaluates to
true.