, 나는 이런 식으로 뭔가를 할 수 있습니다스칼라의 for-comprehensions은 언제 게으른가요? 파이썬에서
lazy = ((i,j) for i in range(0,10000) for j in range(0,10000))
sum((1 for i in lazy))
이 걸릴 것이다, 그러나 메모리 사용은 일정하다. 스칼라에서
같은 구조 :
(for(i<-0 to 10000; j<-i+1 to 10000) yield (i,j)).count((a:(Int,Int)) => true)
잠시 후, 나는 그것이 게으르게 평가해야에도 불구하고 java.lang.OutOfMemoryError
를 얻을.
"비슷한"하지만 후자의 표현은 50005000이 아닌 100020001 개 요소를 반환하는 것으로 보입니다. Whisky tango foxtrot? – Malvolio
@Malvolio는주의를 기울여 주셔서 감사합니다! 'j '는'1에서 10000 '이 아니라'i + 1에서 10000 '사이 여야합니다. 이제 해결되었습니다. –
D' oh. 나는 단지 문제 만이 아니라 그 해결책을 알아 차렸을 것입니다. 인수를 무시하고지도 함수를 쳐다보고 있었다. – Malvolio