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

แลมบ์ดา

Proc ที่ตรวจสอบจำนวนอาร์กิวเมนต์อย่างเคร่งครัด

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

Proc ที่ตรวจสอบจำนวนอาร์กิวเมนต์อย่างเคร่งครัด

แลมบ์ดา คือ Proc ชนิดพิเศษที่ทำงานคล้ายเมธอดทั่วไปมากกว่า โดยจะตรวจสอบจำนวนอาร์กิวเมนต์และจัดการ return ตามปกติ โปรดใช้เมื่อคุณต้องการพฤติกรรมที่คาดเดาได้เหมือนเมธอด

square = lambda { |x| x * x }
puts square.call(6)

แลมบ์ดาแบบลูกศร

ไวยากรณ์ลูกศร -> ซึ่งมีชื่อเล่นว่าแลมบ์ดาแบบลูกศร เป็นวิธีเขียนแลมบ์ดาที่ใช้กันมากที่สุด โดยใส่พารามิเตอร์ไว้ในวงเล็บ

add = ->(a, b) { a + b }
puts add.call(4, 5)

การเรียกใช้แลมบ์ดา

แลมบ์ดารองรับรูปแบบการเรียกใช้แบบเดียวกับ Proc ได้แก่ .call, .() และ [ ]

triple = ->(x) { x * 3 }
puts triple.call(2)
puts triple.(2)
puts triple[2]

การตรวจสอบอาร์กิวเมนต์อย่างเคร่งครัด

ต่างจาก Proc ตรงที่แลมบ์ดาจะทำให้เกิด ArgumentError หากคุณส่งอาร์กิวเมนต์ไม่ครบหรือมากเกินไป วิธีนี้ช่วยตรวจพบข้อผิดพลาดได้ตั้งแต่เนิ่น ๆ

greet = ->(name) { "Hi #{name}" }
puts greet.call("Sam")
begin
  greet.call
rescue ArgumentError => e
  puts "Error: #{e.message}"
end

การคืนค่าอยู่ภายในแลมบ์ดา

return ภายในแลมบ์ดาจะออกจากแลมบ์ดาเท่านั้น จากนั้นการทำงานจะดำเนินต่อไป ซึ่งสอดคล้องกับพฤติกรรมของเมธอด

def demo
  l = -> { return 10 }
  l.call
  20  # this runs
end
puts demo

การตรวจสอบว่าเป็นแลมบ์ดา

ทั้ง Proc และแลมบ์ดาต่างก็เป็นอินสแตนซ์ของ Proc ให้ใช้ lambda? เพื่อแยกทั้งสองแบบออกจากกัน

l = ->(x) { x }
pr = proc { |x| x }
puts l.lambda?
puts pr.lambda?

แลมบ์ดาที่ไม่มีอาร์กิวเมนต์

ไม่ต้องใส่วงเล็บเมื่อแลมบ์ดาไม่มีพารามิเตอร์

now = -> { Time.now.year }
puts "Year: #{now.call}"

แลมบ์ดาหลายบรรทัด

แลมบ์ดาสามารถเขียนครอบคลุมหลายบรรทัดได้ นิพจน์สุดท้ายจะเป็นค่าที่ส่งคืน

classify = ->(n) {
  return "zero" if n.zero?
  n.positive? ? "positive" : "negative"
}
puts classify.call(0)
puts classify.call(-3)

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

เช่นเดียวกับ Proc แลมบ์ดาสามารถเปลี่ยนเป็นบล็อกด้วย & จึงนำไปใช้กับ map, select และเมธอดอื่น ๆ ในลักษณะเดียวกันได้

doubler = ->(n) { n * 2 }
p [1, 2, 3].map(&doubler)

แลมบ์ดาเป็นค่าที่ส่งคืน

เมธอดสามารถสร้างและส่งคืนแลมบ์ดาได้ ทำให้คุณสร้างฟังก์ชันเฉพาะทางได้ทันทีตามต้องการ

def multiplier(by)
  ->(n) { n * by }
end
times10 = multiplier(10)
puts times10.call(5)

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

แลมบ์ดาคือ Proc ที่เคร่งครัดและทำงานคล้ายเมธอด:

  • เขียนด้วย lambda { } หรือ ->(args) { }
  • ตรวจสอบจำนวนอาร์กิวเมนต์และทำให้ return อยู่ภายในแลมบ์ดา
  • ใช้เมื่อความถูกต้องสำคัญ หรือเมื่อคุณสร้างฟังก์ชันเพื่อส่งคืน
is_even = ->(n) { n.even? }
p [1, 2, 3, 4, 5, 6].select(&is_even)

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

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

ทบทวน

คุณได้เรียนรู้เรื่องแลมบ์ดาดังนี้:

  • แลมบ์ดาคือ Proc ที่เคร่งครัด เขียนด้วย ->
  • ตรวจสอบจำนวนอาร์กิวเมนต์
  • return จะออกจากแลมบ์ดาเท่านั้น
  • lambda? ใช้แยกแลมบ์ดาออกจาก Proc ทั่วไป
area = ->(w, h) { w * h }
puts area.call(3, 4)

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

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

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

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

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

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

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

บทเรียน “แลมบ์ดา” ใช้เวลานานแค่ไหน

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

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

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

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

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