คำสั่ง if, elseif และ else
เขียนตรรกะการแตกแขนงตามเงื่อนไขด้วยไวยากรณ์ if/elseif/else ของ Lua
คำสั่ง if, elseif และ else เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
คำสั่ง if พื้นฐาน
คำสั่ง if จะประเมินเงื่อนไขและทำงานในบล็อกเมื่อเงื่อนไขเป็นค่าจริง ใน Lua มีเพียง false และ nil เท่านั้นที่เป็นค่าเท็จ ส่วนค่าอื่นทั้งหมด รวมถึง 0 และ "" เป็นค่าจริง ปิดท้ายบล็อกด้วย end
local score = 85
if score >= 90 then
print("A grade")
end
if score >= 60 then
print("Passing") -- prints
end
if 0 then
print("0 is truthy!") -- prints in Lua
endif/elseif/else
เชื่อมเงื่อนไขหลายรายการด้วย elseif และกำหนดทางเลือกสำรองด้วย else Lua จะประเมินเงื่อนไขจากบนลงล่างและทำงานเฉพาะแขนงแรกที่ตรงเงื่อนไขเท่านั้น ต่างจาก switch/case ในภาษาอื่น ตรงที่ elseif ของ Lua เป็นคำสำคัญคำเดียว (ไม่ใช่ else if)
local score = 75
if score >= 90 then
print("A")
elseif score >= 80 then
print("B")
elseif score >= 70 then
print("C") -- prints
elseif score >= 60 then
print("D")
else
print("F")
endตัวดำเนินการตรรกะในเงื่อนไข
Lua ใช้ and, or และ not เป็นตัวดำเนินการตรรกะ ตัวดำเนินการเหล่านี้หยุดประเมินทันทีเมื่อทราบผล: and จะคืนค่าที่เป็นเท็จตัวแรกหรือค่าตัวสุดท้าย ส่วน or จะคืนค่าที่เป็นจริงตัวแรกหรือค่าตัวสุดท้าย จึงสามารถใช้สร้างรูปแบบการกำหนดค่าเริ่มต้นที่เป็นสำนวนได้
local age = 25
local hasID = true
if age >= 18 and hasID then
print("Entry allowed")
end
-- or for defaults
local name = nil
local display = name or "Guest"
print(display) -- Guestสำนวนสามทางด้วย and/or
Lua ไม่มีตัวดำเนินการแบบสามทาง แต่รูปแบบ and/or สามารถเลียนแบบการทำงานได้: condition and trueVal or falseVal วิธีนี้ใช้ได้ตราบใดที่ trueVal ไม่ใช่ false หรือ nil หากต้องการตรรกะแบบสามทางที่ปลอดภัยกว่า ให้ใช้ฟังก์ชัน if แบบแทรกในนิพจน์
local x = 10
local label = (x > 5) and "big" or "small"
print(label) -- big
-- Safe ternary function
local function ternary(cond, t, f)
if cond then return t else return f end
end
print(ternary(false, "yes", "no")) -- noคำสั่ง if ซ้อนกัน
คุณสามารถวางคำสั่ง if ซ้อนอยู่ภายในแขนงอื่นได้ บล็อกที่ซ้อนกันแต่ละบล็อกต้องมี end ของตัวเอง การซ้อนหลายชั้นมักบ่งบอกว่าสามารถใช้การคืนค่าก่อนกำหนดหรือประโยคตรวจสอบเงื่อนไขเพื่อทำให้ตรรกะแบนราบลงได้
local loggedIn = true
local isAdmin = false
if loggedIn then
if isAdmin then
print("Admin dashboard")
else
print("User dashboard") -- prints
end
else
print("Login required")
endประโยคตรวจสอบเงื่อนไข
ประโยคตรวจสอบเงื่อนไขคือการคืนค่าก่อนกำหนดเพื่อจัดการกรณีข้อมูลไม่ถูกต้องหรือกรณีขอบเขตตั้งแต่ต้นฟังก์ชัน ช่วยลดการซ้อนกัน รูปแบบนี้ทำให้โค้ดใน "เส้นทางปกติ" ไม่ต้องเยื้องและอ่านได้ง่ายขึ้น
local function processAge(age)
if type(age) ~= "number" then
return nil, "age must be a number"
end
if age < 0 then
return nil, "age cannot be negative"
end
-- happy path
return math.floor(age)
end
print(processAge(25.7)) -- 25
print(processAge(-1)) -- nil age cannot be negativeการเปรียบเทียบค่า
ตัวดำเนินการเปรียบเทียบของ Lua ได้แก่ == (เท่ากับ), ~= (ไม่เท่ากับ), <, >, <= และ >= โปรดทราบว่า ~= คือ "ไม่เท่ากับ" ของ Lua ไม่ใช่ != การเปรียบเทียบสตริงใช้ลำดับพจนานุกรม คุณไม่สามารถเปรียบเทียบสตริงกับตัวเลขโดยตรงได้
print(1 == 1) -- true
print(1 ~= 2) -- true
print("abc" < "abd") -- true (lexicographic)
print("10" == 10) -- false (different types)
-- Safe nil check
local val = nil
if val == nil then
print("no value")
endความเท่ากันของสตริง
สตริงสองสายจะเท่ากันใน Lua ก็ต่อเมื่อมีเนื้อหาเป็นไบต์เดียวกันและมีความยาวเท่ากัน Lua เก็บสตริงแบบใช้ร่วมกัน ดังนั้นสตริงที่เท่ากันจึงมักชี้ไปยังหน่วยความจำเดียวกัน ทำให้ == เปรียบเทียบที่อยู่ได้อย่างรวดเร็ว อย่าเปรียบเทียบสตริงด้วย is หรือการเปรียบเทียบการอ้างอิง ให้ใช้ == ซึ่งเปรียบเทียบตามค่าเสมอ
local s1 = "hello"
local s2 = "hel" .. "lo"
print(s1 == s2) -- true (same content)
print(s1 == "Hello") -- false (case sensitive)
-- Check for empty string
local name = ""
if name == "" or name == nil then
print("name is empty or nil")
endการเปรียบเทียบตารางและฟังก์ชัน
ตารางและฟังก์ชันจะถูกเปรียบเทียบตามการอ้างอิง ไม่ใช่ตามเนื้อหา ตัวสร้างตารางสองรายการที่มีเนื้อหาเหมือนกันจะไม่เท่ากัน เว้นแต่จะเป็นออบเจ็กต์เดียวกัน ใช้เมทาเมธอด เช่น __eq เพื่อกำหนดการเปรียบเทียบความเท่ากันแบบกำหนดเองสำหรับตาราง
local t1 = {1, 2, 3}
local t2 = {1, 2, 3}
local t3 = t1
print(t1 == t2) -- false (different objects)
print(t1 == t3) -- true (same reference)
local f1 = function() end
local f2 = function() end
print(f1 == f2) -- falseรูปแบบสำนวนที่พบบ่อย
สำนวน Lua ที่ใช้กับเงื่อนไขซึ่งพบได้บ่อย ได้แก่ ใช้ assert() ตรวจสอบเงื่อนไขเบื้องต้น ใช้เทคนิค and/or สำหรับค่าเริ่มต้นแบบสั้น และหลีกเลี่ยงการปฏิเสธซ้อนสองชั้น (not not x) เพื่อแปลงค่าใด ๆ เป็นบูลีน
-- assert pattern
local function sqrt(n)
assert(n >= 0, "sqrt of negative")
return math.sqrt(n)
end
-- Convert to boolean
local val = 42
local boolVal = not not val
print(boolVal) -- true
-- Default parameter
local function greet(name)
name = name or "World"
print("Hello, " .. name)
end
greet() -- Hello, Worldตรวจสอบอย่างรวดเร็ว
ค่าใดบ้างที่เป็นค่าเท็จใน Lua
ทบทวน: เงื่อนไข
สรุป:
if ... elseif ... else ... end— รูปแบบการแตกแขนงแบบเต็ม- มีเพียง
nilและfalseเท่านั้นที่เป็นค่าเท็จ and/orหยุดประเมินทันทีเมื่อทราบผลและคืนค่าตัวถูกดำเนินการ~=หมายถึง "ไม่เท่ากับ" ใน Lua (ไม่ใช่ !=)- ตารางและฟังก์ชันเปรียบเทียบตามการอ้างอิง ส่วนสตริงเปรียบเทียบตามค่า
- ใช้ประโยคตรวจสอบเงื่อนไขเพื่อลดการซ้อนกัน
คำถามที่พบบ่อย
บทเรียน “คำสั่ง if, elseif และ else” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คำสั่ง if, elseif และ else” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คำสั่ง if, elseif และ else”
เขียนตรรกะการแตกแขนงตามเงื่อนไขด้วยไวยากรณ์ if/elseif/else ของ Lua คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “คำสั่ง if, elseif และ else” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม
ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คำสั่ง if, elseif และ else
- ลูป while และ repeat-until
- ลูป for เชิงตัวเลข
- for แบบทั่วไปและ break