a = b || c
Что делает этот оператор, он говорит Ruby 'присваивать значение b
a
, если b
не ложно, если b
ложно, присвойте значение c
до a
. В случае, если b
не ложно, оператор c
не будет выполнен.
Хороший пример, где вы можете использовать это, если вы получаете переменную откуда-то, а вы неУбедитесь, что он будет равен нулю или нет, поэтому вы создаете переменную, например c
, в качестве второй опции.
Если у вас есть метод, который принимает хеш в качестве параметра, например, и вы хотитенапример, вернуть значение элемента из хеша, который имеет ключ 'b'
, но параметр хеша не всегда будет иметь ключ 'b'
, поэтому вы пишете что-то вроде этого
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
ДругойПример, который мне приходит в голову, - это доступ к элементу массива, который не существует
[1,2,3][3] || "default"
#=> "default"
Или наличие значения по умолчанию для хэша параметров Rails:
@name = params[:name] || "no name provided"