Map dan Collect
Termasuk bagian Dasar-Dasar dalam perjalanan Ruby di Coddy. Pelajaran 68 dari 88.
Meskipun each bagus untuk melakukan tindakan pada elemen, terkadang kamu ingin mengubah array menjadi array baru. Method map (juga disebut collect) melakukan hal ini: method ini membuat array baru yang berisi hasil menjalankan blokmu pada setiap elemen.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # Menampilkan 2, 4, 6, dan 8, masing-masing pada baris tersendiriPerbedaan utama dari each adalah map mengembalikan array baru dengan nilai yang telah diubah. array aslinya tetap tidak berubah.
Berikut contoh praktis yang mengonversi suhu dari Celsius ke Fahrenheit:
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # Menampilkan 32, 68, dan 212, masing-masing pada baris terpisahKamu juga bisa menggunakan map dengan string:
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # Menampilkan Alice dan Bob, masing-masing pada baris terpisahMethod map dan collect identik. Ruby menyediakan kedua nama tersebut, jadi kamu bisa menggunakan nama yang lebih enak dibaca dalam kodemu. Sebagian besar pengembang Ruby lebih memilih map karena lebih singkat.
Tantangan
MudahBaca satu baris input yang berisi bilangan bulat dipisahkan koma (misalnya, 2,4,6,8,10).
Pisahkan input menjadi array bilangan bulat, lalu gunakan method map untuk membuat array baru yang setiap bilangannya dikuadratkan (dikalikan dengan dirinya sendiri).
Cetak setiap elemen dari array baru yang sudah dikuadratkan pada barisnya sendiri.
Misalnya, jika inputnya adalah 2,4,6,8,10, outputnya harus seperti ini:
4
16
36
64
100Jika inputnya adalah 1,2,3,4,5, outputnya harus seperti ini:
1
4
9
16
25Jika inputnya adalah 3,7,11, outputnya harus seperti ini:
9
49
121Jika inputnya adalah 10, outputnya harus seperti ini:
100Coba sendiri
# Baca input yang dipisahkan koma
input = gets.chomp
# TODO: Tulis kodemu di bawah ini
# 1. Pisahkan string input menjadi array berisi bilangan bulat
# 2. Gunakan method map untuk menguadratkan setiap angka
# 3. Cetak setiap hasil kuadrat pada baris tersendiriPelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
4Operator Bagian 2
Operator Logika Bagian 1Operator Logika Bagian 2Ringkasan: Logika SederhanaOperator Logika Bagian 3Operator Logika Bagian 47Kalkulator Pembagian Tagihan
Pesan Selamat DatangMengambil input dari Pengguna10FizzBuzz dengan Variasi
Gambaran Umum PermainanMetode FizzBuzz2Variabel dan Tipe Data
Angka dan VariabelTipe Data stringTipe Data booleanTipe Data SymbolMemeriksa Tipe DataKonvensi PenamaanRangkuman: Membuat Variabel5Pengambilan Keputusan
Pernyataan IfIf - ElseRekap: Kalkulator SederhanaIf - Else BersarangPernyataan Unless8Perulangan
For Loop dengan RentangWhile LoopBreakNextRangkuman: FaktorialTimes LoopUntil LoopPerulangan BersarangRangkuman: Input Dinamis3Operator Bagian 1
Operator AritmetikaOperator ModuloPintasan AritmetikaRingkasan: Matematika SederhanaOperator Perbandingan6Dasar Input dan Output
Output dengan putsOutput dengan print dan pOutput dengan VariabelInput dengan getsMethod chompKonversi TipeRangkuman: Kalkulator UsiaRangkuman: Benar atau Salah9method
Mendefinisikan methodParameter methodNilai KembalianRangkuman: Sigma methodRangkuman: Validation methodNilai Default Parameter12Melakukan Perulangan pada Koleksi
Iterator EachEach dengan IndeksMelakukan Perulangan pada StringMap dan CollectLatihan sendiri: Compiler Ruby online