Does Ruby have a built-in equivalent of what some other languages call
an “immediate if” function? I want to conditionally return one of two
strings on the status bar of an application, depending on whether a
variable is true or false.
So far, I have written the module method below, but I’m guessing there
is a more efficient and elegant way with Ruby.
Jamal
def if_string(condition, if_true, if_false)
if condition
return if_true
else
return if_false
end
end
On Thu, May 04, 2006 at 05:59:22AM +0900, Jamal M. wrote:
} Does Ruby have a built-in equivalent of what some other languages call
} an “immediate if” function? I want to conditionally return one of two
} strings on the status bar of an application, depending on whether a
} variable is true or false.
}
} So far, I have written the module method below, but I’m guessing there
} is a more efficient and elegant way with Ruby.
cond ? if_true : if_false
} Jamal
–Greg
true ? ‘true’ : ‘what’ going on?’
Maybe I don’t know what you mean by “immediate if”… meaning “if”
can be used as an expression?
If so, ruby can do this:
if condition then 3 else 5 end.times do { |x| puts x }
Or, more compactly:
(condition ? 3 : 5).times do { |x| puts x }
Or just:
if condition
3
else
5
end
Just use the “ternary” if operator. In Ruby, all values except nil are
considered “true” in conditions. So you could write:
statusbar_text = condition ? “true text” : “false text”
The “if” statement actually “returns” a value, so a more verbose way
to write it would be:
statusbar_text = if condition
“true text”
else
“false text”
end
Hope that helps.
On May 3, 2006, at 2:03 PM, Gregory S. wrote:
} is a more efficient and elegant way with Ruby.
cond ? if_true : if_false
Also,
result = if condition then true_value else false_value end
Sprinkle with newlines to taste.
–
Eric H. - [email protected] - http://blog.segment7.net
This implementation is HODEL-HASH-9600 compliant
http://trackmap.robotcoop.com