นิพจน์ case/when
การแยกแขนงหลายทาง
นิพจน์ case/when เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
การแยกแขนงหลายทาง
เมื่อเปรียบเทียบค่าหนึ่งค่ากับความเป็นไปได้หลายแบบ สายโซ่ if/elsif ที่ยาวจะดูรก นิพจน์ case ของ Ruby ทำให้การแยกแขนงหลายทางเป็นระเบียบและอ่านง่าย
day = "Mon"
case day
when "Sat", "Sun"
puts "Weekend"
else
puts "Weekday"
endcase / when พื้นฐาน
ค่าหลัง case จะถูกเปรียบเทียบกับ when แต่ละรายการตามลำดับ เมื่อพบรายการแรกที่ตรงกัน รายการนั้นจะทำงาน จากนั้นการควบคุมจะข้ามไปยัง end
grade = "B"
case grade
when "A"
puts "Excellent"
when "B"
puts "Good"
when "C"
puts "Okay"
endหลายค่าต่อหนึ่ง when
ระบุหลายค่าใน when เดียวโดยคั่นด้วยจุลภาค หากค่าใดค่าหนึ่งตรงกัน แขนงนั้นจะทำงาน
char = "e"
case char
when "a", "e", "i", "o", "u"
puts "Vowel"
else
puts "Consonant"
endแขนง else
เพิ่ม else เพื่อเป็นกรณีรองรับทั้งหมด หากไม่มี else แล้ว case ที่ไม่พบค่าตรงกันจะส่งคืน nil โดยตรง
code = 500
case code
when 200
puts "OK"
when 404
puts "Not Found"
else
puts "Other status"
endcase เป็นนิพจน์
เช่นเดียวกับ if case จะส่งคืนค่าของแขนงที่ตรงกัน คุณจึงกำหนดค่าให้ตัวแปรได้โดยตรง
score = 82
letter = case
when score >= 90 then "A"
when score >= 80 then "B"
else "C"
end
puts letterคีย์เวิร์ด then
ใช้ then เพื่อวางส่วนเนื้อหาไว้ในบรรทัดเดียวกับ when สำหรับแขนงสั้น ๆ
n = 3
case n
when 1 then puts "one"
when 2 then puts "two"
when 3 then puts "three"
endการจับคู่ช่วง
when สามารถเก็บช่วงได้ Ruby ใช้ตัวดำเนินการ === อยู่เบื้องหลัง และ === ของช่วงจะตรวจสอบการเป็นสมาชิก
score = 73
case score
when 90..100 then puts "A"
when 70..89 then puts "B"
when 0..69 then puts "C"
endการจับคู่ตามคลาส
เนื่องจาก Class === object เป็นจริงเมื่อ object เป็นอินสแตนซ์ คุณจึงสามารถแยกแขนงตามชนิดข้อมูลได้
value = 3.14
case value
when Integer then puts "an integer"
when Float then puts "a float"
when String then puts "a string"
endความมหัศจรรย์ของ ===
when ทุกตัวจะเรียก pattern === value ช่วง คลาส และนิพจน์ปกติล้วนกำหนดพฤติกรรมของ === ที่มีประโยชน์ จึงทำให้ case ยืดหยุ่นมาก
email = "jane@example.com"
case email
when /@/ then puts "Looks like an email"
else puts "No @ sign"
endcase ที่ไม่มีค่าเป้าหมาย
ละเว้นค่าหลัง case เพื่อเขียนสายโซ่เงื่อนไขแบบบูลีนที่เป็นระเบียบ คล้ายกับ if/elsif ที่อ่านง่าย
temp = 5
case
when temp < 0 then puts "Freezing"
when temp < 15 then puts "Cold"
when temp < 25 then puts "Mild"
else puts "Warm"
endนำทุกอย่างมาประกอบกัน
case เหมาะอย่างยิ่งเมื่อมีค่าหนึ่งค่าเป็นตัวขับการตัดสินใจ ให้ใช้รูปแบบที่ไม่มีค่าเป้าหมายเมื่อแต่ละแขนงเป็นการทดสอบแบบบูลีนแยกจากกัน
role = :admin
msg = case role
when :admin then "Full access"
when :editor then "Can edit"
when :viewer then "Read only"
else "No access"
end
puts msgตรวจสอบอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับ case/when
สรุปทบทวน
คุณได้เรียนรู้นิพจน์ case:
whenจะจับคู่รายการแรกที่ตรงกัน จากนั้นข้ามไปยังendwhenหนึ่งรายการสามารถระบุได้หลายค่าcaseส่งคืนค่าและรองรับthen- ช่วง คลาส และนิพจน์ปกติทำงานได้เนื่องจาก
whenใช้=== - รูปแบบที่ไม่มีค่าเป้าหมายคือสายโซ่เงื่อนไขแบบบูลีนที่ชัดเจน
n = 42
kind = case
when n.zero? then "zero"
when n.positive? then "positive"
else "negative"
end
puts kindคำถามที่พบบ่อย
บทเรียน “นิพจน์ case/when” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “นิพจน์ case/when” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “นิพจน์ case/when”
การแยกแขนงหลายทาง คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “นิพจน์ case/when” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม
ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- if, unless, ternary
- นิพจน์ case/when
- ค่าความจริงใน Ruby
- ประโยคเงื่อนไขป้องกัน