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