do..end vs Kurung Kurawal
Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 16 dari 56.
Ruby memberimu dua cara untuk menulis blok. Keduanya memiliki arti yang sama, tetapi masing-masing lebih cocok digunakan dalam situasi tertentu.
do...end digunakan untuk blok multi-baris:
[1, 2, 3].each do |n|
doubled = n * 2
puts "#{n} -> #{doubled}"
endKurung kurawal { ... } digunakan untuk blok satu baris yang singkat dan berbentuk ekspresi:
[1, 2, 3].each { |n| puts n * 2 }Keduanya memiliki prioritas yang sedikit berbeda, tetapi aturan yang perlu kamu ingat adalah aturan gaya: kurung kurawal untuk satu baris, do...end untuk beberapa baris.
Kedua bentuk dapat mengembalikan nilai. Ekspresi terakhir dalam blok akan diteruskan ke method seperti map:
[1, 2, 3].map { |n| n * 10 } # [10, 20, 30]
[1, 2, 3].map do |n|
n * 10
end # [10, 20, 30]Tantangan
MudahBaca daftar bilangan bulat yang dipisahkan koma dari input. Cetak dua baris:
- Setiap angka dikalikan dua, lalu digabungkan dengan
,. Gunakan bentuk kurung kurawal darimap. - String
"<n> squared is <n*n>"untuk setiap angka, satu per baris. Gunakan bentukdo...enddarieach.
Untuk input 1,2,3, outputnya adalah:
2, 4, 6
1 squared is 1
2 squared is 4
3 squared is 9Coba sendiri
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: baris 1, gandakan nilainya dengan map berbentuk kurung kurawal, lalu gabungkan dengan ", "
# TODO: baris 2..n, kuadratkan nilainya dengan each berbentuk do...end
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