Immediate if method


#1

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


#2

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


#3

true ? ‘true’ : ‘what’ going on?’


#4

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


#5

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.


#6

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. - removed_email_address@domain.invalid - http://blog.segment7.net
This implementation is HODEL-HASH-9600 compliant

http://trackmap.robotcoop.com