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

size
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)
  1. size ← 12, label ← (empty)

    1local size→ 12 = 12 --@size=4, 202local label→ (empty) = ""
  2. label ← medium

    5  label = "small"6elseif size12 <= 15 then7  label→ medium = "medium"8else
  3. print("size=" .. size)

    12print("size=" .. size12)13print("label=" .. labelmedium)
    outputsize=12
    label=medium
  1. size ← 4, label ← (empty)

    1local size→ 4 = 42local label→ (empty) = ""
  2. label ← small

    4if size4 < 10 then5  label→ small = "small"6elseif size <= 15 then
  3. print("size=" .. size)

    12print("size=" .. size4)13print("label=" .. labelsmall)
    outputsize=4
    label=small
  1. size ← 20, label ← (empty)

    1local size→ 20 = 202local label→ (empty) = ""
  2. label ← large

    7  label = "medium"8else9  label→ large = "large"10end
  3. print("size=" .. size)

    12print("size=" .. size20)13print("label=" .. labellarge)
    outputsize=20
    label=large

Pick a Size Label

  1. size starts at 12.
  2. The first check, size < 10, is false.
  3. The elseif check, size <= 15, is true.
  4. label becomes medium. | 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