Satır içi if / unless
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 41 / 56.
Ruby, tek bir ifadenin sonuna tek satırlık bir değiştirici olarak if ve unless koymanıza olanak tanır. Neredeyse İngilizce gibi okunur.
puts "Adult" if age >= 18
puts "Save your work" unless savedBu şununla aynıdır:
if age >= 18
puts "Adult"
end
unless saved
puts "Save your work"
endSatır içi biçim, bir yöntemin başındaki guard tarzı kontrollerde veya bir döngü içindeki tek seferlik koşullu güncellemelerde öne çıkar:
return if name.nil? || name.empty?
counts = Hash.new(0)
words.each do |w|
counts[w] += 1 unless w.start_with?("#")
endÜçlü ifadede olduğu gibi, kısa ifadeler için satır içi değiştiriciler kullanın. Gövde tek bir satırdan daha uzun olacaksa bunun yerine gerçek bir if bloğu yazın.
Görev
KolayVirgülle ayrılmış bir tamsayı listesi okuyun. Her sayı için, ancak sayı sıfır değilse bir satır yazdırın:
positive: <n>ifn > 0yazdırınnegative: <n>unlessn >= 0yazdırın
Her iki satır da satır içi değiştirici biçimini kullanmalıdır (bir if bloğu, else yok). Döngüden sonra, sıfırların sayısı olan Skipped zeros: <count> ifadesini yazdırın; bu sayı da bir if bloğu kullanılmadan hesaplanmalıdır (count kullanın).
3,-2,0,5,0 girdisi için çıktı şöyledir:
positive: 3
negative: -2
positive: 5
Skipped zeros: 2Kendin dene
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: her bir sayı için satır içi `if` / `unless` kullanarak yazdır
# TODO: count kullanarak Skipped zeros: <n> yazdır
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1Dizeler Detaylı İnceleme
Dize Metotlarına Genel BakışDize EnterpolasyonuDizeler Üzerinde YinelemeBölme ve BirleştirmeTekrar - Dize Dokuyucu4Bloklar, Proc'lar ve Lambda'lar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar SözcüğüBlok ParametreleriProc'lar ve Lambda'larÖzet - Özel Yineleyici7Hash'ler 2. Bölüm
Varsayılanlarla Hash.newHash'ler Üzerinde Yinelemeİç İçe Hash'lerBirleştirme ve DönüştürmeTekrar - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Seçme ve ReddetmeMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byTekrar - Veri Hattı8Gelişmiş Karar Verme
Sınıflar ve Regex ile CaseÇok değerli whenÜçlü OperatörSatır içi if / unlessTekrar - Not SınıflandırıcıKendi başına pratik yap: Online Ruby derleyicisi