Concept Flow - Inline if and unless (modifier form)
Start
Evaluate condition
Execute statement
Skip statement
End
The program checks a condition and executes a statement only if the condition is true (for if) or false (for unless), all in one line.
x = 10 puts "x is 10" if x == 10 puts "x is not 5" unless x == 5
| Step | Code Line | Condition | Condition Result | Action | Output |
|---|---|---|---|---|---|
| 1 | x = 10 | - | - | Assign 10 to x | - |
| 2 | puts "x is 10" if x == 10 | x == 10 | true | Print 'x is 10' | x is 10 |
| 3 | puts "x is not 5" unless x == 5 | x == 5 | false | Print 'x is not 5' | x is not 5 |
| Variable | Start | After 1 | After 2 | Final |
|---|---|---|---|---|
| x | nil | 10 | 10 | 10 |
Inline if/unless modifier form: statement if condition statement unless condition Executes statement only if condition is true (if) or false (unless). Good for short conditional actions on one line.
puts "Hello" if trueif true, so the condition is always true.puts "Hello" runs and prints "Hello".unless false.puts "No" unless false is valid syntax. puts "No"unless (false) puts "No"unless (false) is invalid due to missing space after the string literal. Options B and D are incomplete or invalid.count = 0 count += 1 if false count += 1 unless false puts count
count += 1 if false does not run because condition is false, so count stays 0.count += 1 unless false runs because unless false means if true, so count becomes 1.puts count prints 1.puts "Done" unless
unless but no condition follows, causing a syntax error.nums = [0, 1, 2, 3], which code snippet correctly prints only the non-zero numbers using inline unless?puts n unless n == 0, which prints n only if n is not zero. nums.each { |n| puts n if n == 0 } prints only zero, which is wrong. nums.each { |n| puts n unless n != 0 } prints only zero because unless n != 0 means if n == 0. nums.each { |n| puts n if n != 0 } prints non-zero numbers but uses inline if, not unless.Pass the test and this pattern moves unknown