2012-10-10 14 views
26

Eventuali duplicati:
check if value exists in array in RubyVerificando qualsiasi elemento di un array soddisfa una condizione

ho questo metodo che loop attraverso una matrice di stringhe e restituisce vero se qualsiasi stringa contiene la stringa "cane". Funziona, ma le dichiarazioni di reso multiple appaiono disordinate. C'è un modo più eloquente per farlo?

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

Penso che l'altra domanda controlli solo se uno degli elementi dell'array '==" dog "' che è distinto da uno qualsiasi degli elementi dell'array che contiene quella stringa. –

risposta

46

Usa Enumerable#any?

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

Si tornerà true/false.

+1

Ah, sì, semanticamente meglio di 'detect'. – meagar

Problemi correlati