Saya ingin menggunakan min(5,10)
, atau Math.max(4,7)
. Apakah ada fungsi untuk efek ini di Ruby?
ruby
enumerable
obuzek
sumber
sumber
std::max(4, 7)
memiliki lebih banyak "tanda baca" daripada[4, 7].max
?std::max
dapat diimpor ke namespace Anda sehingga menjadimax(4, 7)
. Tunggu; melihat di atas, saya melihat saya sudah mengatakan itu.Kamu bisa menggunakan
atau
Ini adalah metode untuk Array.
sumber
Semua hasil tersebut menghasilkan sampah dalam upaya yang bersemangat untuk menangani lebih dari dua argumen. Saya ingin tahu bagaimana kinerjanya dibandingkan dengan yang baik:
yaitu, by-the-way, jawaban resmi saya untuk pertanyaan Anda.
sumber
[a,b].max
, tetapi masih belum jelas apakah ini lebih cepat dari implementasi di atas. blog.bigbinary.com/2016/11/17/…Jika Anda perlu mencari maks / min hash, Anda bisa menggunakan
#max_by
atau#min_by
sumber
Selain jawaban yang diberikan, jika Anda ingin mengonversi Enumerable # max menjadi metode max yang dapat memanggil nomor variabel atau argumen, seperti dalam beberapa bahasa pemrograman lain, Anda dapat menulis:
Keluaran:
Ini menyalahgunakan properti operator percikan untuk membuat objek array yang berisi semua argumen yang disediakan, atau objek array kosong jika tidak ada argumen yang disediakan. Dalam kasus terakhir, metode ini akan kembali
nil
, karena memanggil Enumerable # max pada objek array kosong akan kembalinil
.Jika Anda ingin mendefinisikan metode ini pada modul Matematika, ini harus melakukan trik:
Perhatikan bahwa Enumerable.max, setidaknya, dua kali lebih lambat dibandingkan dengan operator ternary (
?:
) . Lihat jawaban Dave Morse untuk metode yang lebih sederhana dan lebih cepat.sumber
sumber