¿Cómo uso el operador condicional (? :) en Ruby?

Resuelto Mithun Sreedharan asked hace 14 años • 7 respuestas

¿Cómo se usa el operador condicional ( ? :) en Ruby?

Por ejemplo, ¿es esto correcto?

<% question = question.size > 20 ? question.question.slice(0, 20)+"..." : question.question %>
Mithun Sreedharan avatar Nov 23 '10 12:11 Mithun Sreedharan
Aceptado

Es el operador ternario y funciona como en C (los paréntesis no son necesarios). Es una expresión que funciona así:

if_this_is_a_true_value ? then_the_result_is_this : else_it_is_this

Sin embargo, en Ruby, iftambién es una expresión so: if a then b else c end=== a ? b : c, excepto por cuestiones de precedencia. Ambas son expresiones.

Ejemplos:

puts (if 1 then 2 else 3 end) # => 2

puts 1 ? 2 : 3                # => 2

x = if 1 then 2 else 3 end
puts x                        # => 2

Tenga en cuenta que en el primer caso se requieren paréntesis (de lo contrario, Ruby se confunde porque cree que tiene puts if 1algo de basura adicional después), pero no son necesarios en el último caso ya que dicho problema no surge.

Puede utilizar el formulario "si largo" para facilitar la lectura en varias líneas:

question = if question.size > 20 then
  question.slice(0, 20) + "..."
else 
  question
end
 avatar Nov 23 '2010 05:11
puts true ? "true" : "false"
=> "true"


puts false ? "true" : "false"
=> "false"
DGM avatar Nov 23 '2010 05:11 DGM