Ruby: проверьте, имеет ли одна переменная тип conditional

#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
  

Перечисляемый #любой?