Immediate if method

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

} 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

···

On Thu, May 04, 2006 at 05:59:22AM +0900, Jamal Mazrui wrote:

true ? 'true' : 'what\' going on?'

···

On 5/3/06, Jamal Mazrui <Jamal.Mazrui@fcc.gov> 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.

Jamal

def if_string(condition, if_true, if_false)
if condition
return if_true
else
return if_false
end

--
--------
David Pollak's Ruby Playground
http://dppruby.com

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.

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

···

On 5/3/06, Jamal Mazrui <Jamal.Mazrui@fcc.gov> 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.

Jamal

def if_string(condition, if_true, if_false)
if condition
return if_true
else
return if_false
end

Also,

result = if condition then true_value else false_value end

Sprinkle with newlines to taste.

···

On May 3, 2006, at 2:03 PM, Gregory Seidman wrote:

On Thu, May 04, 2006 at 05:59:22AM +0900, Jamal Mazrui 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

--
Eric Hodel - drbrain@segment7.net - http://blog.segment7.net
This implementation is HODEL-HASH-9600 compliant

http://trackmap.robotcoop.com