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

ทบทวนบล็อก

ส่งบล็อกให้เมธอด

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

การส่งบล็อกให้เมธอด

บล็อกคือกลุ่มโค้ดที่คุณส่งให้เมธอด เมธอด Ruby หลายรายการ เช่น each รับบล็อกและเรียกใช้ให้คุณ บล็อกเป็นพื้นฐานของรูปแบบการเขียน Ruby ที่สื่อความหมายได้ดี

[1, 2, 3].each do |n|
  puts n * 10
end

ไวยากรณ์บล็อกสองแบบ

ใช้ do ... end สำหรับบล็อกหลายบรรทัด และใช้วงเล็บปีกกา { } สำหรับคำสั่งบรรทัดเดียวสั้น ๆ ทั้งสองแบบทำงานเหมือนกัน

[1, 2, 3].each { |n| puts n }

พารามิเตอร์ของบล็อก

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

{ a: 1, b: 2 }.each do |key, value|
  puts "#{key} = #{value}"
end

yield เรียกใช้บล็อก

ภายในเมธอด yield จะเรียกใช้บล็อกที่ถูกส่งเข้ามา คุณไม่จำเป็นต้องประกาศบล็อกในรายการพารามิเตอร์เพื่อใช้ yield

def twice
  yield
  yield
end
twice { puts "Hi" }

yield พร้อมอาร์กิวเมนต์

ส่งค่าให้บล็อกผ่าน yield ค่าเหล่านั้นจะไปอยู่ในพารามิเตอร์ของบล็อก

def greet_each(names)
  names.each { |n| yield n }
end
greet_each(["Ann", "Bo"]) { |name| puts "Hello #{name}" }

block_given?

การเรียกใช้ yield โดยไม่มีบล็อกจะทำให้เกิดข้อผิดพลาด ให้ตรวจสอบด้วย block_given? ก่อน เพื่อทำให้บล็อกเป็นตัวเลือก

def maybe
  if block_given?
    yield
  else
    puts "No block provided"
  end
end
maybe
maybe { puts "Block ran" }

บล็อกส่งคืนค่า

บล็อกจะประเมินค่าเป็นนิพจน์สุดท้ายของบล็อก เมธอดอย่าง map จะรวบรวมค่าที่ส่งคืนเหล่านั้นเป็นอาร์เรย์ใหม่

squares = [1, 2, 3, 4].map { |n| n * n }
p squares

ค่าของ yield

yield เองจะส่งคืนค่าของบล็อก ดังนั้นเมธอดจึงสามารถแปลงข้อมูลนำเข้าผ่านบล็อกที่ผู้เรียกจัดเตรียมให้ได้

def transform(x)
  yield x
end
result = transform(5) { |n| n + 100 }
puts result

การเก็บบล็อกด้วย &

ใส่ & ไว้หน้าพารามิเตอร์ตัวสุดท้ายเพื่อเก็บบล็อกเป็นออบเจ็กต์ Proc ที่คุณสามารถจัดเก็บหรือส่งต่อได้

def run(&block)
  block.call
end
run { puts "Called via block.call" }

พารามิเตอร์แบบมีหมายเลข

Ruby รุ่นใหม่ช่วยให้คุณไม่ต้องตั้งชื่อพารามิเตอร์ของบล็อกเพียงตัวเดียว โดยใช้ _1 (หรือ it ใน Ruby 3.4 ขึ้นไป) ซึ่งเหมาะสำหรับบล็อกสั้น ๆ

[10, 20, 30].each { puts _1 }

นำทุกอย่างมาประกอบกัน

บล็อกช่วยให้เมธอดรับพฤติกรรมได้:

  • do...end หรือ { } ใช้ส่งบล็อก
  • yield ใช้เรียกใช้บล็อก และ block_given? ใช้ตรวจสอบว่ามีการส่งบล็อกมาหรือไม่
  • &block เปลี่ยนบล็อกให้เป็นออบเจ็กต์ที่นำกลับมาใช้ซ้ำได้
def repeat(times)
  return unless block_given?
  times.times { |i| yield i }
end
repeat(3) { |i| puts "Step #{i}" }

ตรวจความเข้าใจ

ทดสอบความเข้าใจเกี่ยวกับบล็อกของคุณ

ทบทวน

คุณได้ทบทวนเรื่องบล็อกดังนี้:

  • บล็อกส่งพฤติกรรมไปยังเมธอดผ่าน do...end หรือ { }
  • yield เรียกใช้บล็อกและส่งคืนค่าของบล็อก
  • block_given? ทำให้บล็อกเป็นตัวเลือกที่ไม่จำเป็นต้องส่งมาก็ได้
  • &block จับบล็อกไว้เป็น Proc
def wrap
  puts "<<"
  yield
  puts ">>"
end
wrap { puts "content" }

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

บทเรียน “ทบทวนบล็อก” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ทบทวนบล็อก”

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

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

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

บทเรียน “ทบทวนบล็อก” ใช้เวลานานแค่ไหน

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

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

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

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

  1. ทบทวนบล็อก
  2. Proc
  3. แลมบ์ดา
  4. โคลเชอร์และขอบเขต
← กลับไปที่ Ruby Academy