Apakah menyuntikkan sama dengan mengurangi ruby?


114

Saya melihat bahwa mereka didokumentasikan bersama di sini . Apakah mereka sama? Mengapa Ruby memiliki begitu banyak alias (seperti map / kumpulkan untuk array)? Terima kasih banyak.

Jawaban:


160

Ya, dan itu juga disebut folddalam banyak bahasa pemrograman lain dan Matematika. Banyak alias Ruby agar intuitif bagi pemrogram dengan latar belakang berbeda. Jika Anda ingin menggunakan #lengthpada Array, Anda bisa. Jika Anda ingin menggunakan #size, tidak masalah juga!


4
Jika Anda ingin membuat alias sendiri, Anda mungkin tertarik dengan alias_method .
Nick McCurdy

23
#length dan #count tidak setara di Ruby. #length dan #size adalah.
Pertanyaan Quolonel

9
3.length memberikan NoMethodError; 3. ukuran kembali 4. Jelas 3 bukan sebuah larik, tapi hati-hati mengetik bebek! (3_000_000_000_000_000. Ukuran mengembalikan 8 dan 3_000_000_000_000_000_000_000_000_000_000_000_000_000_000. Ukuran mengembalikan 20; tampaknya jumlah memori yang dibutuhkan.)
ChrisPhoenix

18
hm, menurut saya dokumen Ruby saat ini ruby-doc.org/core-2.2.3/Enumerable.html#method-i-reduce mungkin lebih baik jika dikatakan sama injectsehingga pengguna tidak perlu membaca keduanya deskripsi dan mencoba mencari tahu apakah mereka sama ... bukankah ini sesuai dengan prinsip KERING?
nonopolaritas

3
@ 太極 者 無極 而 生, bagus, saya bingung dengan ini seperti yang Anda prediksi
neontapir

6

Versi dokumentasi yang lebih baru Enumerable#reducemenjelaskannya secara eksplisit:

Metode injectdan reduceadalah alias. Tidak ada manfaat kinerja juga.


1
Saya suka memisahkannya berdasarkan cara penggunaannya, jelas hanya untuk semantik. jika itu proc ( &:+), kurangi, jika itu blok, injeksikan
TheRealMrCrowley
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.