2012-10-10 14 views
26

Mögliche Duplizieren erfüllt:
check if value exists in array in Rubyprüft jedes Element eines Array eine Bedingung

Ich habe diese Methode, die durch eine Reihe von Saiten Loops und liefert true zurück, wenn eine Zeichenfolge enthält, die Zeichenfolge 'Hund'. Es funktioniert, aber die mehrfache Rückgabeaussagen sehen chaotisch aus. Gibt es einen eloquenteren Weg, dies zu tun?

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

Ich denke, dass andere Frage nur überprüft, ob eines der Array-Elemente '==" Hund "', die sich von einem der Array-Elemente mit dieser Zeichenfolge unterscheidet. –

Antwort

46

Verwenden Enumerable#any?

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

Es true/false zurück.

+1

Ah, ja, semantisch besser als 'detect'. – meagar

Verwandte Themen