if / unless Sebaris
Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 41 dari 56.
Ruby memungkinkan kamu menempatkan if dan unless di akhir satu pernyataan, sebagai modifier satu baris. Sintaksnya hampir seperti bahasa Inggris.
puts "Adult" if age >= 18
puts "Save your work" unless savedIni sama dengan:
if age >= 18
puts "Adult"
end
unless saved
puts "Save your work"
endBentuk inline cocok untuk pemeriksaan penjaga di awal method, atau untuk pembaruan kondisional sekali saja di dalam perulangan:
return if name.nil? || name.empty?
counts = Hash.new(0)
words.each do |w|
counts[w] += 1 unless w.start_with?("#")
endSeperti operator ternary, gunakan modifier inline untuk pernyataan singkat. Jika isi pernyataan lebih dari satu baris, tulis blok if sungguhan.
Tantangan
MudahBaca list bilangan bulat yang dipisahkan dengan koma. Untuk setiap angka, cetak satu baris, tetapi hanya jika angkanya bukan nol:
- Cetak
positive: <n>jikan > 0 - Cetak
negative: <n>kecuali jikan >= 0
Kedua baris harus menggunakan bentuk modifier inline (tanpa blok if, tanpa else). Setelah perulangan, cetak Skipped zeros: <count>, dengan jumlah nol sebagai hitungannya, yang juga dihitung tanpa blok if (gunakan count).
Untuk input 3,-2,0,5,0, output-nya adalah:
positive: 3
negative: -2
positive: 5
Skipped zeros: 2Coba sendiri
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: cetak setiap angka menggunakan `if` / `unless` sebaris
# TODO: cetak Skipped zeros: <n> menggunakan count
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