#ruby
#ruby
Вопрос:
В JS я мог бы сделать что-то вроде этого..
# Very JS looking Ruby code
a = 1
b = 'e'
c = nil
if (a || b || c).is_a? String
puts 'hi'
end
Это не работает.
Есть ли способ (без отдельных if / thens, сделать что-то подобное в Ruby?
Комментарии:
1. Я не буду давать это в качестве ответа, поскольку недостатком этого является создание временного массива, но можно написать,
[1,'e',nil].grep(String).any? #=> true; [1,[2],nil].grep(String).any? #=> false
. Тем не менее, она хорошо читается.
Ответ №1:
Как насчет
if [a,b,c].any? {|x| x.is_a? String}
Ответ №2:
Я не уверен, но для меня это выглядит довольно хорошо, надеюсь, это поможет)
def hi(array)
puts 'hi' if array.any?(String)
end