ค่าเริ่มต้นและการผสาน
fetch, merge, dig
ค่าเริ่มต้นและการผสาน เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
ปัญหาของ nil
การอ่านคีย์ที่ไม่มีอยู่จะคืนค่า nil ซึ่งอาจทำให้เกิดผลลัพธ์ที่ไม่คาดคิดในการคำนวณหรือตรรกะ Ruby มีวิธีที่ปลอดภัยกว่าในการจัดการกับค่าที่ไม่มีอยู่
h = { a: 1 }
puts h[:b].inspectfetch สำหรับการเข้าถึงอย่างปลอดภัย
fetch จะคืนค่า หรือแสดงข้อผิดพลาดที่ชัดเจนหากไม่พบคีย์ ใช้เมธอดนี้เมื่อคีย์เป็นข้อมูลที่จำเป็น
h = { name: "Ada" }
puts h.fetch(:name)fetch พร้อมค่าเริ่มต้น
ส่งอาร์กิวเมนต์ตัวที่สองให้ fetch เป็นค่าสำรองที่จะใช้เฉพาะเมื่อไม่พบคีย์
h = { name: "Ada" }
puts h.fetch(:age, 0)
puts h.fetch(:name, "Unknown")fetch พร้อมบล็อก
ส่งบล็อกเพื่อคำนวณค่าสำรองเมื่อจำเป็น โดยบล็อกจะทำงานเฉพาะเมื่อค้นหาไม่พบ
h = {}
puts h.fetch(:x) { "computed default" }แฮชพร้อมค่าเริ่มต้น
Hash.new(default) จะคืนค่าเริ่มต้นสำหรับคีย์ที่ไม่มีอยู่แทนค่า nil ค่าเริ่มต้นนี้ถูกใช้ร่วมกัน จึงเหมาะกับค่าที่เปลี่ยนแปลงไม่ได้แบบง่าย ๆ มากกว่า
counts = Hash.new(0)
counts[:a] += 1
counts[:a] += 1
puts counts[:a]
puts counts[:b]ค่าเริ่มต้นด้วยบล็อก
Hash.new { |hash, key| ... } จะคำนวณค่าเริ่มต้นใหม่สำหรับแต่ละคีย์ เหมาะอย่างยิ่งสำหรับการจัดกลุ่มลงในอาร์เรย์
groups = Hash.new { |h, k| h[k] = [] }
groups[:fruit] << "apple"
groups[:fruit] << "pear"
puts groups[:fruit].inspectการนับด้วยค่าเริ่มต้น
การกำหนดค่าเริ่มต้นเป็น 0 ทำให้การนับคำเป็นเรื่องง่ายและเป็นระเบียบ
words = ["a", "b", "a", "a"]
count = Hash.new(0)
words.each { |w| count[w] += 1 }
puts countการรวมแฮช
merge รวมแฮชสองตัวเป็นแฮชใหม่ โดยคีย์จากแฮชตัวที่สองจะมีผลเมื่อเกิดความขัดแย้ง
defaults = { color: "red", size: "M" }
user = { color: "blue" }
puts defaults.merge(user)การรวมแฮชด้วยบล็อก
ส่งบล็อกให้ merge เพื่อจัดการความขัดแย้ง เช่น นำค่ามาบวกกัน
a = { x: 1, y: 2 }
b = { y: 3, z: 4 }
puts a.merge(b) { |key, old, new| old + new }การเข้าถึงข้อมูลซ้อนกันอย่างปลอดภัยด้วย dig
dig อ่านข้อมูลผ่านแฮชที่ซ้อนกันอย่างปลอดภัย โดยคืนค่า nil หากระดับใดระดับหนึ่งไม่มีข้อมูล แทนที่จะทำงานล้มเหลว
data = { user: { address: { city: "London" } } }
puts data.dig(:user, :address, :city)
puts data.dig(:user, :phone, :home).inspectการใช้เครื่องมือร่วมกัน
ใช้ค่าเริ่มต้นและการรวมแฮชร่วมกันเพื่อสร้างการตั้งค่าจากค่าพื้นฐานพร้อมค่าที่เขียนทับ
base = { retries: 3, timeout: 30 }
options = base.merge(timeout: 60)
puts options.fetch(:timeout)ตรวจสอบความเข้าใจอย่างรวดเร็ว
ตรวจสอบความเข้าใจเกี่ยวกับค่าเริ่มต้นและการรวมแฮช
ทบทวน
ตอนนี้คุณสามารถจัดการข้อมูลที่ไม่มีอยู่ได้อย่างเหมาะสมแล้ว:
fetchพร้อมค่าเริ่มต้น บล็อก หรือข้อผิดพลาดแบบเข้มงวดHash.new(0)และค่าเริ่มต้นแบบบล็อกสำหรับการนับและการจัดกลุ่มmergeพร้อมบล็อกจัดการความขัดแย้งdigสำหรับการเข้าถึงข้อมูลซ้อนกันอย่างปลอดภัย
หลักสูตรถัดไป: ช่วงและ Enumerable
c = Hash.new(0)
c[:hits] += 1
puts c[:hits]คำถามที่พบบ่อย
บทเรียน “ค่าเริ่มต้นและการผสาน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ค่าเริ่มต้นและการผสาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ค่าเริ่มต้นและการผสาน”
fetch, merge, dig คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ค่าเริ่มต้นและการผสาน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม
ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สัญลักษณ์เทียบกับสตริง
- การสร้างและอ่านแฮช
- การวนซ้ำแฮช
- ค่าเริ่มต้นและการผสาน