0Pricing
Ruby Academy · บทเรียน

นิพจน์ 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"
end

case / 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"
end

case เป็นนิพจน์

เช่นเดียวกับ 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"
end

case ที่ไม่มีค่าเป้าหมาย

ละเว้นค่าหลัง 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 จะจับคู่รายการแรกที่ตรงกัน จากนั้นข้ามไปยัง end
  • when หนึ่งรายการสามารถระบุได้หลายค่า
  • 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. if, unless, ternary
  2. นิพจน์ case/when
  3. ค่าความจริงใน Ruby
  4. ประโยคเงื่อนไขป้องกัน
← กลับไปที่ Ruby Academy