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

พื้นฐาน case/in

การจับคู่เชิงโครงสร้าง

พื้นฐาน case/in เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

การจับคู่รูปแบบมาถึงแล้ว

นิพจน์ case/in ของ Ruby ทำการ จับคู่รูปแบบเชิงโครงสร้าง โดยทดสอบรูปร่างและเนื้อหาของข้อมูล ไม่ใช่เพียงความเท่ากันเท่านั้น นี่เป็นการยกระดับที่ทรงพลังจาก case/when

case 42
in Integer
  puts 'it is an integer'
end

case/in เทียบกับ case/when

case/when เปรียบเทียบด้วย === (ในลักษณะตรวจสอบความเท่ากัน) ส่วน case/in จะ แยกโครงสร้าง ค่าและสามารถผูกตัวแปรได้ ให้ใช้ in เมื่อต้องการจับคู่โครงสร้าง

case 'hello'
in String => s
  puts "string of length #{s.length}"
end

การจับคู่ค่าลิเทอรัล

แขนง in สามารถจับคู่ค่าลิเทอรัลได้ ซึ่งทำงานคล้ายการตรวจสอบความเท่ากันอย่างแม่นยำ

case 3
in 1 then puts 'one'
in 3 then puts 'three'
in _ then puts 'other'
end

รูปแบบชนิดข้อมูล

การระบุชื่อคลาสจะจับคู่ค่าทุกค่าที่มีชนิดนั้น โดยอาศัย === อยู่เบื้องหลัง

def describe(x)
  case x
  in Integer then 'number'
  in String then 'text'
  in Array then 'list'
  end
end
puts(describe([1, 2]))

การผูกตัวแปร

ตัวระบุที่อยู่เดี่ยว ๆ ในรูปแบบจะ ผูก ค่าที่จับคู่ได้เข้ากับตัวแปรใหม่ ซึ่งคุณสามารถใช้ในแขนงนั้นได้

case [1, 2]
in [a, b]
  puts(a + b)
end

ตัวแทนทุกค่า

ขีดล่าง _ จะจับคู่กับทุกสิ่งโดยไม่ผูกค่า ใช้เป็นตัวจับคู่ทั้งหมดหรือใช้ละเว้นตำแหน่งบางตำแหน่ง

case 99
in 0 then puts 'zero'
in _ then puts 'something else'
end

ตัวดำเนินการตรึงค่า

หากต้องการจับคู่กับ ค่า ของตัวแปรที่มีอยู่แล้ว (แทนการผูกตัวแปรใหม่) ให้ตรึงค่าด้วย ^

expected = 5
case 5
in ^expected
  puts 'matched the pinned value'
end

รูปแบบทางเลือก

รวมรูปแบบด้วย | เพื่อจับคู่ทางเลือกใดทางเลือกหนึ่งจากหลายทางเลือกในแขนงเดียว

case 'b'
in 'a' | 'b' | 'c'
  puts 'in the first three letters'
end

การผูกค่าที่จับคู่ได้ทั้งหมด

ใช้ pattern => name เพื่อทดสอบรูปแบบและผูกค่าที่จับคู่ได้เข้ากับชื่อในเวลาเดียวกัน

case 'Ruby'
in String => word
  puts(word.upcase)
end

NoMatchingPatternError

หากไม่มีแขนง in ใดจับคู่ได้และไม่มี else Ruby จะยก NoMatchingPatternError ขึ้นมา ให้เพิ่ม else เพื่อ handle ส่วนที่เหลืออย่างปลอดภัย

case 10
in 1 then puts 'one'
else
  puts 'no specific match'
end

การจับคู่ในบรรทัดเดียว

ตัวดำเนินการ => ทำการจับคู่และกำหนดค่าทางขวาในบรรทัดเดียว โดยจะยกข้อผิดพลาดหากจับคู่ไม่สำเร็จ ส่วนตัวดำเนินการ in จะส่งคืน true/false แทน

result = [1, 2] in [Integer, Integer]
puts result

ตรวจสอบอย่างรวดเร็ว

จะเกิดอะไรขึ้นหาก case/in ไม่มีแขนงที่จับคู่ได้และไม่มี else

สรุปทบทวน: พื้นฐาน case/in

คุณได้เรียนรู้พื้นฐานการจับคู่เชิงโครงสร้างแล้ว:

  • case/in จับคู่รูปร่าง ไม่ใช่เพียงความเท่ากัน
  • ค่าลิเทอรัล รูปแบบชนิดข้อมูล และตัวแทนทุกค่า _
  • การผูกตัวแปรและตัวดำเนินการตรึงค่า ^
  • ทางเลือกด้วย | และ pattern => name
  • การจับคู่ที่หายไปจะยก NoMatchingPatternError
case 7
in Integer => n then puts(n * 2)
end

คำถามที่พบบ่อย

บทเรียน “พื้นฐาน case/in” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “พื้นฐาน case/in” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน case/in”

การจับคู่เชิงโครงสร้าง คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “พื้นฐาน case/in” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม

ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. พื้นฐาน case/in
  2. รูปแบบอาร์เรย์และแฮช
  3. รูปแบบ Find และการ์ด
  4. กรณีใช้งานจริง
← กลับไปที่ Ruby Academy