Acabo de tropezar con una instrucción que no está clara:

a = 5 || 3                       # ==> 5
verdict = true || false          # ==> true

Dado que || es lo mismo que or, ¿cómo y / o por qué se usaría esta declaración? Realmente no demuestra ninguna toma de decisiones más que elegir siempre la primera opción.

Conozco la asignación de ||=, pero esta es diferente. Buscando una aclaración sobre el uso anterior de || solo.

1
Rich_F 25 oct. 2019 a las 10:59

1 respuesta

La mejor respuesta
a = b || c

Lo que hace esta declaración es que le dice a Ruby que 'asigne el valor de b a a, a menos que b sea falso, si b es falso, asigne el valor de { {X4}} a a. En caso de que b no sea falso, la instrucción c no se ejecutará.

Un buen ejemplo en el que podría usar esto es si obtiene una variable de algún lugar y no está seguro de si será nula o no, por lo que crea una variable como c como segunda opción.

Si tiene un método que toma un hash como parámetro, por ejemplo, y desea devolver el valor del elemento del hash que tiene la clave 'b', por ejemplo, pero el parámetro hash no siempre tendrá una tecla 'b', por lo que escribe algo como esto

def value_of_b(hash)
  b_val = hash['b'] || 'unknown'
  puts "The value of b is :#{b_val}"
end

h = {'a' => 1, 'b' => 2}

value_of_b(h)
#=>The value of b is :2

m = {'a' => 1}

value_of_b(m)
#=>The value of b is :unknown

Otro ejemplo que me viene a la mente es acceder a un elemento de matriz que no existe

[1,2,3][3] || "default"
#=> "default"

O tener un valor predeterminado para el hash de parámetros de Rails:

@name = params[:name] || "no name provided"
2
Viktor 25 oct. 2019 a las 14:43