, böyle bir şey yapabilirsiniz:Scala'nın kavrayışları ne zaman tembel? Python
lazy = ((i,j) for i in range(0,10000) for j in range(0,10000))
sum((1 for i in lazy))
biraz zaman alacak, ama hafıza kullanımı sabittir. Scala içinde
aynı yapı:
(for(i<-0 to 10000; j<-i+1 to 10000) yield (i,j)).count((a:(Int,Int)) => true)
Bir süre sonra, bunun lazily değerlendirilmelidir rağmen bir java.lang.OutOfMemoryError
olsun.
"Bir şey gibi", ancak bu ikinci ifade, 50005000 değil 100020001 öğeye dönüyor gibi görünüyor. Viski tango foxtrot? – Malvolio
@Malvolio Fark ettiğin için teşekkürler! j', 1'den 10000'e, 1'den 10000'e kadar olmalıdır. Şimdi sabit. –
D'oh. Çözümü fark etmeliydim, sadece sorun değil. Argümanları göz ardı ederek harita fonksiyonlarına bakıyordum .. – Malvolio