![]() |
1
41
在视图中,每次访问元素时都会重新计算它们。在流中,元素在计算时被保留。 例如:
将对每个元素的映射重新求值两次。第一次打印一次,第二次打印一次。相反
只会使元素加倍一次。 视图就像创建集合的配方。当你要求一个视图的元素时,它每次都会执行配方。 一条小溪就像一个拿着一堆干洗卡的人。他知道如何计算集合的后续元素。你可以向他索要收藏品的下一个元素,然后给你一张卡片,卡片上写着元素,卡片上的绳子绑在他的手指上(帮助他记忆)。另外,在他给你一张卡片之前,他会解开手指上的第一根绳子,然后把它绑在新卡片上。 如果你抓住第一张卡片(即保持对流头的引用),当你要求下一个元素时,你可能最终会用完卡片(即内存),但是如果你不需要回到第一个元素,你可以剪断字符串,把不需要的卡片交还给他,他会再利用它们(它们毕竟是干抹掉的)。这就是流如何表示无限序列而不耗尽内存的方法。 |
![]() |
2
10
|
![]() |
Wickoo · Scala变量解析:类与局部变量 4 月前 |
![]() |
Jake · 如何回滚臭鼬事务以进行集成测试?(缺少隐式原点) 6 月前 |
![]() |
Readren · 如何定义标量。标量3中元组的ValueOf? 1 年前 |
![]() |
Leif Andersen · “=>”在scala泛型中是什么意思? 1 年前 |