สร้าง Enumerator ด้วย ::new method
สำหรับ Ruby แล้ว enumerator ก็คือ Object ที่สามารถมีพฤติกรรมที่สามารถ generate ค่าบางอย่างออกมาได้ เราสามารถสร้าง enumerator ได้หลายวิธี แต่วิธีที่มาบันทึกไว้หน่อยคือใช้ Enumerator.new
เพราะอยากได้ Enumerator โดยไม่ต้องสร้าง method ใหม่เอง แค่ใช้การโยน block ให้กับ method new
เพื่อรับ yielder object มาให้เราส่งค่าเข้าไปเท่านั้น
ตัวอย่างโค้ดเช่น อยากได้ Enumerator อ่านข้อมูลในไฟล์ทีละ 4 MB สามารถสร้างได้แบบนี้
enum = Enumerator.new do |yielder|
loop do
break if file.eof
bytes = file.read(4*1024*1024)
yielder << bytes
end
end
ซึ่งใน block ที่ส่งให้ new ก็เขียนโค้ดวนซ้ำอ่านค่าในไฟล์จนกว่าจะ EOF แล้วก็ใช้ method <<
ส่งค่า bytes ให้ yielder object นั่นเอง