Ich suche nach einem Element in source
, das eine Bedingung erfüllt. Die Bedingung ist oft, aber nicht immer, ein Regexp-Match. Ich bin auf der Suche nach einer Version von find
, die das Ergebnis der Bedingung, nicht das ursprüngliche Element zurückgibt. Mit find
muss ich das Kriterium für das erfolgreiche Element neu berechnen.Ein `find`, das den Zustandswert zurückgibt, nicht den Elementwert
Das Beste, was ich in dieser Richtung gearbeitet läuft:
source.find {|e| if (m = e.match(/(e.)/)); break m[0]; end}
Um Semikolons Aufforderung Rubocop zu bemängeln mehreren Anweisungen Linien zu vermeiden, ziehe ich es zu schreiben, wie folgt:
source.find {|e| break m[0] if (m = e.match(/(e.)/))}
Aber Rubin kann nicht mit der Vorwärtsreferenz umgehen (und ich bin nicht verdreht genug, um e
für m
wiederzuverwenden).
Gibt es etwas Eleganteres, um diese Aufgabe mit dem Kurzschnitt zu erledigen?
Falls Sie es nicht wussten, können Sie die Antworten aufwerten und den am meisten hilfreichen auswählen. –