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

ค่าเริ่มต้นและการผสาน

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].inspect

fetch สำหรับการเข้าถึงอย่างปลอดภัย

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. สัญลักษณ์เทียบกับสตริง
  2. การสร้างและอ่านแฮช
  3. การวนซ้ำแฮช
  4. ค่าเริ่มต้นและการผสาน
← กลับไปที่ Ruby Academy