Menu
Coddy logo textTech

if / unless בשורה אחת

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 41 מתוך 56.

Ruby מאפשרת לך למקם את if ואת unless בסוף של פקודה יחידה, בתור משנה של שורה אחת. זה נקרא כמעט כמו אנגלית.

puts "Adult" if age >= 18
puts "Save your work" unless saved

זה זהה ל:

if age >= 18
  puts "Adult"
end

unless saved
  puts "Save your work"
end

הצורה התמציתית מתאימה במיוחד לבדיקות הגנה בראש מתודה, או לעדכונים מותנים חד־פעמיים בתוך לולאה:

return if name.nil? || name.empty?

counts = Hash.new(0)
words.each do |w|
  counts[w] += 1 unless w.start_with?("#")
end

כמו באופרטור התנאי, השתמשו במתנים בשורה אחת עבור פקודות קצרות. אם גוף הפקודה יהיה ארוך יותר משורה אחת, כתבו במקום זאת בלוק if רגיל.

challenge icon

אתגר

קל

קרא רשימה של מספרים שלמים המופרדים בפסיקים. עבור כל מספר, הדפס שורה אחת, אך רק כשהמספר אינו אפס:

  • הדפס positive: <n> אם n > 0
  • הדפס negative: <n> אלא אם כן n >= 0

בשתי השורות יש להשתמש בצורת משנה המופיעה בשורה (inline modifier) (ללא בלוק if, ללא else). לאחר הלולאה, הדפס Skipped zeros: <count>, כאשר count הוא מספר האפסים, שגם הוא מחושב ללא בלוק if (השתמש ב-count).

עבור הקלט 3,-2,0,5,0, הפלט הוא:

positive: 3
negative: -2
positive: 5
Skipped zeros: 2

נסו בעצמכם

numbers = gets.chomp.split(",").map(&:to_i)

# TODO: הדפס עבור כל מספר באמצעות `if` / `unless` בשורה אחת
# TODO: הדפס Skipped zeros: <n> באמצעות count
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Ruby אונליין