Array#each
mengeksekusi blok yang diberikan untuk setiap elemen array, lalu mengembalikan array itu sendiri.
Array#map
juga mengeksekusi blok yang diberikan untuk setiap elemen larik, tetapi mengembalikan larik baru yang nilainya adalah nilai kembalian dari setiap iterasi blok.
Contoh: asumsikan Anda memiliki array yang didefinisikan sebagai berikut:
arr = ["tokyo", "london", "rio"]
Kemudian coba jalankan each
:
arr.each { |element| element.capitalize }
# => ["tokyo", "london", "rio"]
Perhatikan nilai yang dikembalikan hanyalah array yang sama. Kode di dalam each
blok dijalankan, tetapi nilai yang dihitung tidak dikembalikan; dan karena kode tersebut tidak memiliki efek samping, contoh ini tidak berfungsi.
Sebaliknya, memanggil metode larik akan map
mengembalikan larik baru yang elemennya adalah nilai kembalian dari setiap putaran menjalankan map
blok:
arr.map { |element| element.capitalize }
# => ["Tokyo", "London", "Rio"]