2012-10-10 15 views
26

Duplicar posible:
check if value exists in array in RubyVerificando cualquier elemento de una matriz satisface una condición

tengo este método que coloca a través de una matriz de cadenas y devuelve cierto si cualquier cadena contiene la cadena 'perro'. Está funcionando, pero las declaraciones de devolución múltiples parecen desordenadas. ¿Hay una manera más elocuente de hacer esto?

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

Creo que otra pregunta solo comprueba si uno de los elementos de la matriz '==" dog "' que es distinto de cualquiera de los elementos de la matriz que contienen esa cadena. –

Respuesta

46

Uso Enumerable#any?

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

Se volverá true/false.

+1

Ah, sí, semánticamente mejor que 'detectar'. – meagar

Cuestiones relacionadas