2012-10-10 7 views
26

Можно создать дубликат:
check if value exists in array in RubyПроверка, если любой элемент массива удовлетворяет условию

Я этот метод, который перебирает массив строк и возвращает истину, если строка содержит строка «собака». Он работает, но несколько операторов возврата выглядят беспорядочно. Есть ли более красноречивый способ сделать это?

def has_dog?(acct) 
    [acct.title, acct.description, acct.tag].each do |text| 
    return true if text.include?("dog") 
    end 
    return false 
end 
+2

Я думаю, что другой вопрос проверяет только один элемент массива '==" dog ", который отличается от любого из элементов массива, содержащих эту строку. –

ответ

46

Использование Enumerable#any?

def has_dog?(acct) 
    [acct.title, acct.description, acct.tag].any? { |text| text.include? "dog" } 
end 

Он вернется true/false.

+1

Ах, да, семантически лучше, чем 'detect'. – meagar

Смежные вопросы