Satır İç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 (inline) form, bir metodun başındaki koruma tarzı (guard-style) kontroller veya bir döngü içindeki tek seferlik koşullu güncellemeler için mükemmeldir:
return if name.nil? || name.empty?
counts = Hash.new(0)
words.each do |w|
counts[w] += 1 unless w.start_with?("#")
endTernary operatöründe olduğu gibi, kısa ifadeler için satır içi (inline) değiştiriciler kullanın. Eğer gövde tek bir satırdan fazla olacaksa, bunun yerine gerçek bir if bloğu yazın.
Görev
KolayVirgülle ayrılmış bir tam sayı listesi okuyun. Her sayı için, yalnızca sayı sıfır olmadığında bir satır yazdırın:
n > 0if isepositive: <n>yazdırınn >= 0unless değilsenegative: <n>yazdırın
Her iki satır da satır içi değiştirici (inline modifier) formunu kullanmalıdır (if bloğu yok, else yok). Döngüden sonra, sıfırların sayısı olan count değerini bir if bloğu kullanmadan hesaplayarak (count kullanın) Skipped zeros: <count> şeklinde yazdırın.
3,-2,0,5,0 girişi için çıktı şöyledir:
positive: 3
negative: -2
positive: 5
Skipped zeros: 2Kopya kağıdı
Ruby, if ve unless yapılarının tek bir ifadenin sonunda satır içi (inline) niteleyiciler olarak kullanılmasına izin verir:
puts "Adult" if age >= 18
puts "Save your work" unless savedKoruma cümlecikleri (guard clauses) veya basit koşullu güncellemeler için kullanışlıdır:
return if name.nil? || name.empty?
counts[w] += 1 unless w.start_with?("#")Satır içi niteleyicileri yalnızca tek satırlık gövdeler için kullanın; daha uzun olan her şey için tam bir if bloğu kullanın.
Kendin 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
1Derinlemesine Stringler
String Metotlarına Genel BakışString InterpolationStringler Üzerinde GezinmeSplit ve JoinÖzet - String Weaver4Bloklar, Procs ve Lambdalar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar KelimesiBlok ParametreleriProcs ve LambdalarÖzet - Özel İteratör7Hashes Bölüm 2
Varsayılan Değerlerle Hash.newHash Yapıları Üzerinde Yinelemeİç İçe Hash YapılarıBirleştirme ve DönüştürmeÖzet - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Select ve RejectMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byÖzet - Data Pipeline8İleri Seviye Karar Yapıları
Sınıflar ve Regex ile CaseÇok Değerli whenTernary OperatörüSatır İçi if / unlessÖzet - Not Sınıflandırıcı