Select dan Reject
Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 21 dari 56.
Method select mengembalikan array baru yang hanya berisi elemen-elemen yang bloknya mengembalikan nilai yang dianggap benar. Inilah cara Ruby menuliskan "filter".
numbers = [1, 2, 3, 4, 5, 6]
evens = numbers.select { |n| n.even? }
puts evens.inspect # [2, 4, 6]reject adalah kebalikannya, metode ini mempertahankan semua elemen yang bloknya mengembalikan false:
odds = numbers.reject { |n| n.even? }
puts odds.inspect # [1, 3, 5]Keduanya mengembalikan array baru; array asli tidak berubah.
Blok tersebut hanyalah predikat, apa pun yang menghasilkan nilai true atau false bisa digunakan:
words = ["hi", "hello", "hey", "yo"]
long = words.select { |w| w.length >= 3 }
puts long.inspect # ["hello", "hey"]Tantangan
PemulaBaca list bilangan bulat yang dipisahkan dengan koma. Cetak dua baris:
- Bilangan yang lebih besar dari
10(gunakanselect), digabungkan dengan, - Bilangan yang tidak habis dibagi
3(gunakanreject), digabungkan dengan,
Untuk input 3,7,12,15,20, output-nya adalah:
12, 15, 20
7, 20Coba sendiri
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: baris 1, numbers > 10, gabungkan dengan ", "
# TODO: baris 2, numbers yang TIDAK habis dibagi 3, gabungkan dengan ", "
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