在Ruby中,惰性求值可以通過使用Enumerator
類來實現。Enumerator
是一個可以按需生成值的對象,可以在需要時調用next
方法來獲取下一個值。懶惰求值的優勢是可以節省計算資源,在需要時再去計算值,而不是一次性計算所有值。
下面是一個簡單的例子,演示如何使用Enumerator
來實現惰性求值:
lazy_enum = Enumerator.new do |yielder|
num = 1
loop do
yielder.yield num
num += 1
end
end
# 只會計算和輸出前5個值
5.times do
puts lazy_enum.next
end
在這個例子中,我們創建了一個Enumerator
對象lazy_enum
,它會生成從1開始的整數序列。然后我們使用times
方法來循環5次,每次調用lazy_enum.next
來獲取下一個值并輸出。由于Enumerator
是惰性求值的,所以只有在調用next
方法時才會計算和生成下一個值。
通過使用Enumerator
類,我們可以很方便地實現惰性求值,節省計算資源并提高效率。