【发布时间】:2011-08-09 12:18:52
【问题描述】:
在 Python 中,我可以这样做:
lazy = ((i,j) for i in range(0,10000) for j in range(0,10000))
sum((1 for i in lazy))
这需要一段时间,但内存使用量是恒定的。
scala 中的相同构造:
(for(i<-0 to 10000; j<-i+1 to 10000) yield (i,j)).count((a:(Int,Int)) => true)
过了一会儿,我得到了一个java.lang.OutOfMemoryError,尽管它应该被懒惰地评估。
【问题讨论】:
标签: scala lazy-evaluation for-comprehension