Ich habe diese Methode entwickelt, um das längste Wort in einem Array zu finden, aber ich frage mich, ob es einen besseren Weg dafür gibt. Ich bin ziemlich neu in Ruby und habe das einfach als Übung zum Erlernen der inject
Methode gemacht.
Es gibt entweder das längste Wort in einem Array oder ein Array der gleich längsten Wörter zurück.
%Vor%Ruby hat eine Standardmethode, um ein Element in einer Liste mit dem Maximum eines Wertes zurückzugeben.
%Vor%oder Sie können die Methode max_by
verwenden %Vor%um alle Elemente mit der maximalen Länge zu erhalten
%Vor% Hier ist eine mit inject
(funktioniert nicht für ein leeres Array):
, die zu
verkürzt werden kann %Vor%für diejenigen, die Golf mögen.
Diese Methode hängt nur von generischen Enumerable
-Methoden ab, da ist nichts Array
spezifisch, daher können wir sie in das Enumerable
-Modul ziehen, wo sie auch für Set
s oder% co_de verfügbar ist % s, nicht nur Enumerator
s.
Diese Lösung verwendet die inject-Methode, um die längsten Strings in einem Array zu akkumulieren, und wählt dann diejenigen mit der höchsten Länge aus.
animals = ["Maus", "Katze", "Vogel", "Bär", "Elch"]
animals.inject (Hash.neu {| h, k | h [k] = []}) {| acc, e | acc [e.größe] & lt; & lt; e; acc} .sort.last [1]
Dies gibt zurück: ["Maus", "Maus"]
Tags und Links ruby enumerable inject