ในหนังสือ Ruby ผมเห็นเรื่อง Code Blocks ซึ่งมีศัพท์แปลกๆคือ Proc และ lambda พอตามต่อไปอีกพบว่ามันไปยืมมาจาก functional programming ไม่ทราบว่าการโปรแกรมลักษณะนี้มีประโยชน์อย่างไร และใช้บ่อยไหม ถ้ายกตัวอย่างในแง่ของ best practices ได้ก็จะดีมากครับ :)
กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น
ผมเจอตัวอย่างแบบจำเป็นอย่างยิ่งที่ http://www.codenone.com/node/250
ขอบคุณครับ ^^
ตอนนี้เข้าใจมากขึ้นแล้ว บางคนเรียกว่า Blocks หรือ Closures ถ้าใครยังไม่เข้าใจลองอ่าน concept ได้จาก link ด้านล่าง หนังสือที่ผมมีอยู่อธิบายเรื่องนี้ได้ไม่ดี เลยต้องไปหาอ่านจากข้างนอก
ถ้าเขียน program ภายใต้ context ของ functional language แล้ว
การ pass function เป็น parameter เป็นเรื่องปกติที่ต้องทำเลย
ลักษณะการ pass function หรือ procedure เป็น parameter
มีศัทพ์เรียกว่า Higer Order Procedure หรือ Higher order function
http://en.wikipedia.org/wiki/Higher-order_function
http://pphetra.blogspot.com/2005/11/higher-order-procedures.html
เราอาจจะพูดได้ว่า block ใน ruby ก็คือ syntactic suger สำหรับสร้าง anonymous Proc นั่นเอง
(เหมือนในหลักการ, implement จริงๆไม่ใช่
อ่านได้ใน http://www.ruby-forum.com/topic/71221)
ส่วน Closure กับ Block ต่างกันอย่างไร
Closure ก็คือ Block ที่มีการ capture ตัวแปรที่อยู่นอก block ตอนที่ define
อธิบายภาษาไทยยากจัง
ลองอ่านนี่ดู http://www.artima.com/intv/closures2.html
หรืออ่านตัวอย่างนี้ ก็ชัดเจนดี
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/8255
ขอบคุณครับพี่ เดี๋ยวลองดูต่อ