Ternary Operatörü
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 40 / 56.
Ternary operatörü, bir değer döndüren if/else yapısı için tek satırlık bir kısayoldur. Sözdizimi condition ? value_if_true : value_if_false şeklindedir.
age = 20
status = age >= 18 ? "Eligible" : "Not Eligible"
puts status # EligibleŞu şekilde yazmakla aynıdır:
status = if age >= 18
"Eligible"
else
"Not Eligible"
endHer iki dal da kısa değerler döndürdüğünde ternary kullanın. Eğer dallardan biri birden fazla ifadeye ihtiyaç duyuyorsa, gerçek bir if/else yapısına geri dönün: bir ternary içine çok fazla şey sığdırmak okumayı zorlaştırır.
Bunu, interpolasyon da dahil olmak üzere diğer ifadelerin içinde doğrudan kullanabilirsiniz:
count = 1
puts "#{count} item#{count == 1 ? "" : "s"}" # 1 öğe
count = 5
puts "#{count} item#{count == 1 ? "" : "s"}" # 5 öğeGörev
KolayGirdiden bir n tam sayısı okuyun. Üçlü operatör (ternary operator) kullanarak (if/else blokları kullanmadan), tam olarak şunu yazdırın:
<n> is <label>burada label şunlardan biridir:
n > 0olduğundapositiven < 0olduğundanegativen == 0olduğundazero
İpucu: iç içe geçmiş bir üçlü operatör kullanın, condition ? a : (other_condition ? b : c).
5 girdisi için çıktı 5 is positive şeklindedir. 0 için ise 0 is zero şeklindedir.
Kopya kağıdı
Ternary operatörü, tek satırlık bir if/else kısayoludur: condition ? value_if_true : value_if_false
age = 20
status = age >= 18 ? "Eligible" : "Not Eligible" # "Eligible"Ternary operatörleri iç içe geçebilir ve dize enterpolasyonu (string interpolation) içinde kullanılabilir:
count = 5
puts "#{count} item#{count == 1 ? "" : "s"}" # 5 items
# İç içe geçmiş ternary
n = 3
label = n > 0 ? "positive" : (n < 0 ? "negative" : "zero")Ternary'yi yalnızca kısa ve basit dallanmalar için kullanın — dallanmalar birden fazla ifade gerektirdiğinde if/else yapısını tercih edin.
Kendin dene
n = gets.to_i
# YAPILACAK: etiketi oluşturmak için bir ternary (üçlü) ifade kullanın, ardından puts ile yazdırın
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ı