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

รูปแบบ Find และการ์ด

เงื่อนไขในการจับคู่

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

เงื่อนไขกำกับ

เพิ่ม if หรือ unless เพื่อเป็น เงื่อนไขกำกับรูปแบบ แขนงจะจับคู่ได้ก็ต่อเมื่อทั้งรูปแบบและเงื่อนไขสำเร็จ

case 7
in Integer => n if n.odd?
  puts 'odd integer'
end

เงื่อนไขกำกับใช้ตัวแปรที่ผูกไว้

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

case [4, 9]
in [a, b] if a < b
  puts 'ascending pair'
end

เงื่อนไขกำกับของ unless

เงื่อนไขกำกับ unless จะจับคู่เมื่อเงื่อนไขเป็นเท็จ ซึ่งตรงข้ามกับ if

case 0
in Integer => n unless n.positive?
  puts 'zero or negative'
end

แขนงที่มีเงื่อนไขกำกับหลายแขนง

รวมเงื่อนไขกำกับในแขนงต่าง ๆ เพื่อสร้างลำดับการตัดสินใจที่ชัดเจน

def grade(score)
  case score
  in Integer => s if s >= 90 then 'A'
  in Integer => s if s >= 70 then 'B'
  else 'C'
  end
end
puts(grade(85))

รูปแบบค้นหา

รูปแบบค้นหา [*, x, *] จะค้นหาอาร์เรย์เพื่อหารูปแบบย่อยที่อยู่ ที่ใดก็ได้ ภายใน โดยมีตัวดำเนินการกระจายอยู่ทั้งสองด้าน

case [1, 2, 3, 4]
in [*, 3, *]
  puts 'contains a 3'
end

การผูกค่าภายในการค้นหา

องค์ประกอบที่จับคู่ได้ในรูปแบบค้นหาสามารถผูกไว้เพื่อเก็บค่าที่ค้นพบ

case [10, 20, 30]
in [*, x, *] if x > 25
  puts("found #{x}")
end

การเก็บค่าบริเวณรอบข้าง

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

case [1, 2, 99, 4, 5]
in [*before, 99, *after]
  p before
  p after
end

ค้นหาองค์ประกอบตามชนิด

รูปแบบค้นหาสามารถใช้ร่วมกับรูปแบบชนิดข้อมูลเพื่อค้นหาองค์ประกอบแรกที่มีชนิดที่กำหนด

case [1, 'hi', 2]
in [*, String => word, *]
  puts(word)
end

เงื่อนไขกำกับเทียบกับรูปแบบ

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

case { role: 'admin', age: 40 }
in { role: 'admin', age: } if age >= 18
  puts 'adult admin'
end

การรวมการค้นหากับเงื่อนไขกำกับ

รูปแบบค้นหาและเงื่อนไขกำกับเมื่อใช้ร่วมกันจะช่วยให้คุณถามได้ว่า มีองค์ประกอบใดบ้างที่ตรงตามเงื่อนไขนี้หรือไม่

numbers = [3, 5, 8, 11]
case numbers
in [*, n, *] if n.even?
  puts("first even-ish hit: #{n}")
end

ลำดับของแขนง

ระบบจะลองแขนงจากบนลงล่าง โดยแขนงแรกที่จับคู่ได้จะเป็นผลลัพธ์ ให้ใส่รูปแบบที่มีเงื่อนไขกำกับเฉพาะเจาะจงกว่าก่อนรูปแบบทั่วไป

case 100
in Integer => n if n > 50 then puts 'big'
in Integer then puts 'small'
end

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

รูปแบบค้นหา [*, x, *] ทำอะไร

สรุปทบทวน: รูปแบบค้นหาและเงื่อนไขกำกับ

คุณได้เพิ่มเงื่อนไขและการค้นหาให้กับการจับคู่แล้ว:

  • เงื่อนไขกำกับ if / unless ช่วยปรับรูปแบบให้ละเอียดขึ้น
  • เงื่อนไขกำกับสามารถใช้ตัวแปรที่ผูกไว้ได้
  • รูปแบบค้นหา [*, x, *] ค้นหาได้ทุกตำแหน่ง
  • ตัวดำเนินการกระจายทั้งสองตัวสามารถตั้งชื่อเพื่อเก็บค่าบริเวณรอบข้าง
  • แขนงแรกที่จับคู่ได้จะเป็นผลลัพธ์ ดังนั้นลำดับจึงมีความสำคัญ
case [1, 7, 3]
in [*, x, *] if x > 5 then puts x
end

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

บทเรียน “รูปแบบ Find และการ์ด” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “รูปแบบ Find และการ์ด”

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

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

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

บทเรียน “รูปแบบ Find และการ์ด” ใช้เวลานานแค่ไหน

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

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

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

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

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