#ruby
#ruby
Вопрос:
Допустим, у меня определены следующие переменные:
a = 6
b = 4
c = 0
Я хочу присвоить первое ненулевое значение другой переменной, но в обратном порядке (c -> b -> a). Изначально я пытался d = c || b || a
, но это все равно привело к 0. Есть ли однострочный способ сделать это?
Комментарии:
1. Другой способ — не допускать, чтобы переменные были равны 0, но пусть это будет
nil
в таком случае. Часто лучше избежать проблемы в восходящем потоке, чем позволить ей произойти и решить ее позже.2. Числа представляют размеры коллекций DataMapper, поэтому они будут только числовыми значениями.
Ответ №1:
Использовать detect
[c,b,a].detect { |i| i > 0 }
Комментарии:
1. Или сохранить два символа с помощью
find
!2. Спасибо, это было действительно легко реализовать!
Ответ №2:
[c,b,a].select { |i| i > 0 }.first => 4