Merangkai Map
Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 22 dari 56.
Kamu sudah mengenal map di dasar-dasar, yang membuat array baru dengan mengubah setiap elemennya. Kekuatan sebenarnya terlihat saat kamu menggabungkannya dengan select, reject, dan lainnya.
Setiap method mengembalikan array, jadi memanggil method lain pada hasilnya akan terus berlanjut:
numbers = [1, 2, 3, 4, 5]
result = numbers
.select { |n| n.odd? }
.map { |n| n * 10 }
puts result.inspect # [10, 30, 50]Baca rantai dari atas ke bawah: mulai dengan angka, pertahankan angka ganjil, kalikan masing-masing dengan 10. Tanpa variabel sementara dan tanpa perulangan.
Singkatan &:method_name berfungsi saat blok hanya memanggil satu method:
["hi", "yo"].map { |s| s.upcase } # ["HI", "YO"]
["hi", "yo"].map(&:upcase) # ["HI", "YO"] (sama)Penulisan singkat ini ada di mana-mana dalam kode Ruby. Kenali saat kamu melihatnya.
Tantangan
MudahBaca daftar kata yang dipisahkan koma. Cetak dalam satu baris kata-kata yang lebih panjang dari 3 karakter, dalam huruf kapital, dengan pemisah , .
Buat sebagai satu rangkaian: select kata-kata yang panjang, map kata-kata itu dengan &:upcase, lalu join.
Untuk input hi,hello,yo,coddy,sup, output-nya adalah:
HELLO, CODDYCoba sendiri
words = gets.chomp.split(",")
# TODO: rangkai select + map(&:upcase) + join
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami String
Ringkasan Method StringInterpolasi StringMenelusuri StringMemisahkan dan MenggabungkanRekap: Perangkai String4Block, Proc, dan Lambda
Apa Itu Block?do..end vs Kurung KurawalKata Kunci yieldParameter BlockProc dan LambdaRangkuman, Iterator Kustom5Andalan Enumerable
Select dan RejectMerangkai MapReduce / Injectcount, all?, any?, none?group_by dan partitionsort_by, min_by, max_byRekap: Alur Data8Pengambilan Keputusan Lanjutan
Case dengan class & regexwhen dengan Banyak NilaiOperator Ternaryif / unless SebarisUlasan, Pengklasifikasi NilaiLatihan sendiri: Compiler Ruby online