Control Flow Details
Elseif Chain
elseif checks ordered conditions until one branch matches.
ordered choices
Put the most specific or earliest rule first, then let later branches handle the rest.
Elseif Chain
elseif_chain.lua
Replay: real traced execution (multi-file project)
local size = 12
local label = ""
if size < 10 then
label = "small"
elseif size <= 15 then
label = "medium"
else
label = "large"
end
print("size=" .. size)
print("label=" .. label)
local size = 4
local label = ""
if size < 10 then
label = "small"
elseif size <= 15 then
label = "medium"
else
label = "large"
end
print("size=" .. size)
print("label=" .. label)
local size = 20
local label = ""
if size < 10 then
label = "small"
elseif size <= 15 then
label = "medium"
else
label = "large"
end
print("size=" .. size)
print("label=" .. label)
size ← 12, label ← (empty)
1local size→ 12 = 12 --@size=4, 202local label→ (empty) = ""label ← medium
5 label = "small"6elseif size12 <= 15 then7 label→ medium = "medium"8elseprint("size=" .. size)
12print("size=" .. size12)13print("label=" .. labelmedium)outputsize=12 label=medium
size ← 4, label ← (empty)
1local size→ 4 = 42local label→ (empty) = ""label ← small
4if size4 < 10 then5 label→ small = "small"6elseif size <= 15 thenprint("size=" .. size)
12print("size=" .. size4)13print("label=" .. labelsmall)outputsize=4 label=small
size ← 20, label ← (empty)
1local size→ 20 = 202local label→ (empty) = ""label ← large
7 label = "medium"8else9 label→ large = "large"10endprint("size=" .. size)
12print("size=" .. size20)13print("label=" .. labellarge)outputsize=20 label=large
Pick a Size Label
sizestarts at12.- The first check,
size < 10, is false. - The
elseifcheck,size <= 15, is true. labelbecomesmedium. | Size | First matching branch | Label | | --- | --- | --- | |4|if|small| |12|elseif|medium| |20|else|large|
Exercise: elseif_chain.lua
Use if, elseif, and else to label a size as small, medium, or large