Ich möchte verwenden min(5,10)
, oder Math.max(4,7)
. Gibt es entsprechende Funktionen in Ruby?
ruby
enumerable
obuzek
quelle
quelle
std::max(4, 7)
hat mehr "Interpunktion" als[4, 7].max
?std::max
dies in Ihren Namespace importiert werden kann, so dass es einfach wirdmax(4, 7)
. Warten; Wenn ich nach oben schaue, sehe ich, dass ich das schon gesagt habe.Sie können verwenden
oder
Es ist eine Methode für Arrays.
quelle
All diese Ergebnisse erzeugen Müll in einem eifrigen Versuch, mehr als zwei Argumente zu verarbeiten. Ich wäre gespannt, wie sie sich im Vergleich zu guten alten Leuten verhalten:
Das ist übrigens meine offizielle Antwort auf Ihre Frage.
quelle
[a,b].max
, aber es ist immer noch nicht klar, ob es schneller als die obige Implementierung ist. blog.bigbinary.com/2016/11/17/…Wenn Sie das Maximum / Min eines Hashs ermitteln müssen, können Sie
#max_by
oder verwenden#min_by
quelle
Wenn Sie zusätzlich zu den bereitgestellten Antworten Enumerable # max in eine max-Methode konvertieren möchten , die wie in einigen anderen Programmiersprachen eine variable Nummer oder Argumente aufrufen kann, können Sie Folgendes schreiben:
Ausgabe:
Dies missbraucht die Eigenschaften des Splat-Operators, um ein Array-Objekt zu erstellen, das alle angegebenen Argumente enthält, oder ein leeres Array-Objekt, wenn keine Argumente angegeben wurden. Im letzteren Fall wird die Methode zurückgegeben
nil
, da der Aufruf von Enumerable # max für ein leeres Array-Objekt zurückgegeben wirdnil
.Wenn Sie diese Methode im Math-Modul definieren möchten, sollte dies den Trick tun:
Beachten Sie, dass Enumerable.max im Vergleich zum ternären Operator (
?:
) mindestens zweimal langsamer ist . In der Antwort von Dave Morse finden Sie eine einfachere und schnellere Methode.quelle
quelle