Yanıtlar:
Yapabilirsin
[5, 10].min
veya
[4, 7].max
Numaralandırılabilir modülünden geliyorlar , bu nedenle içeren Enumerable
her şey bu yöntemlere sahip olacak.
v2.4 , numarayı atladıkları için Enumerable'ın yöntemlerinden çok daha hızlı olanı Array#min
ve bunları tanıtır .Array#max
#each
@nicholasklick başka bir seçenekten bahseder Enumerable#minmax
, ancak bu sefer bir dizi döndürür [min, max]
.
[4, 5, 7, 10].minmax
=> [4, 10]
std::max(4, 7)
daha fazla noktalama işareti olduğunu [4, 7].max
biliyor musunuz?
std::max
, ad alanınıza alınabileceğini fark edersiniz , böylece olur max(4, 7)
. Bekle; yukarıya baktığımda bunu zaten söyledim.
Kullanabilirsiniz
[5,10].min
veya
[4,7].max
Diziler için bir yöntem.
Tüm bu sonuçlar ikiden fazla argümanı ele alma gayreti ile çöp üretir. Ben iyi 'ol kıyasla nasıl performans görmek merak ediyorum:
def max (a,b)
a>b ? a : b
end
bu arada, bu soruya vereceğim resmi cevap.
[a,b].max
, ancak yukarıdaki uygulamadan daha hızlı olup olmadığı hala net değil. blog.bigbinary.com/2016/11/17/…
Bir karma değerinin maksimum / dakikasını bulmanız gerekirse, #max_by
veya#min_by
people = {'joe' => 21, 'bill' => 35, 'sally' => 24}
people.min_by { |name, age| age } #=> ["joe", 21]
people.max_by { |name, age| age } #=> ["bill", 35]
Sağlanan yanıtlara ek olarak, Enumerable # max öğesini , diğer bazı programlama dillerinde olduğu gibi, değişken bir sayı veya bağımsız değişken çağırabilecek bir max yöntemine dönüştürmek istiyorsanız , şunları yazabilirsiniz:
def max(*values)
values.max
end
Çıktı:
max(7, 1234, 9, -78, 156)
=> 1234
Bu, sağlanan tüm bağımsız değişkenleri içeren bir dizi nesnesi veya hiçbir bağımsız değişken sağlanmamışsa boş bir dizi nesnesi oluşturmak için splat operatörünün özelliklerini kötüye kullanır. İkinci durumda, boş bir dizi nesnesindeki Enumerable # maxnil
çağrılması döndüğünden yöntem geri döner .nil
Bu yöntemi Math modülünde tanımlamak istiyorsanız, bunun yapılması gerekir:
module Math
def self.max(*values)
values.max
end
end
Enumerable.max değerinin üçlü operatöre ( ?:
) kıyasla en az iki kat daha yavaş olduğuna dikkat edin . Daha basit ve daha hızlı bir yöntem için Dave Morse'nin cevabına bakın .
def find_largest_num(nums)
nums.sort[-1]
end