ruby Enumerator::lazy



當一個很大的數組或集合須要作循環操做的時候,一次性把數據放到內存會有很大弊端。這時lazy就派上用場了。
Float::INFINITY 是無窮大意思
舉個例子 取出1到無窮大對7整除餘數爲0的前10個數值。
(1..Float::INFINITY).select { |x| x % 7 == 0 }.take(10).to_a

  這樣寫的話會直接卡死,這個時候用lazy數組

(1..Float::INFINITY).lazy.select { |x| x % 7 == 0 }.take(10).to_a

 

一樣,當咱們操做一個很大的文件時,直接作each_line操做會把整個文件都放到內存裏。ruby

file = File.open('xxxx', 'r')
file.each_line.select { |row| row.xxx }

用lazy方法會逐步加載文件。spa

file = File.open('xxxx', 'r')
file.each_line.lazy.select { |row| row }

  

關於Enumerator::lazy 詳細用法:code

https://railsware.com/blog/2012/03/13/ruby-2-0-enumerablelazy/
相關文章
相關標籤/搜索