Menu
Coddy logo textTech

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 saved

Bu şununla aynıdır:

if age >= 18
  puts "Adult"
end

unless saved
  puts "Save your work"
end

Satı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?("#")
end

Ternary 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.

challenge icon

Görev

Kolay

Virgü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 > 0 if ise positive: <n> yazdırın
  • n >= 0 unless değilse negative: <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: 2

Kopya 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 saved

Koruma 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
quiz iconKendini test et

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