![]() |
1
41
在视图中,每次访问元素时都会重新计算它们。在流中,元素在计算时被保留。 例如:
将对每个元素的映射重新求值两次。第一次打印一次,第二次打印一次。相反
只会使元素加倍一次。 视图就像创建集合的配方。当你要求一个视图的元素时,它每次都会执行配方。 一条小溪就像一个拿着一堆干洗卡的人。他知道如何计算集合的后续元素。你可以向他索要收藏品的下一个元素,然后给你一张卡片,卡片上写着元素,卡片上的绳子绑在他的手指上(帮助他记忆)。另外,在他给你一张卡片之前,他会解开手指上的第一根绳子,然后把它绑在新卡片上。 如果你抓住第一张卡片(即保持对流头的引用),当你要求下一个元素时,你可能最终会用完卡片(即内存),但是如果你不需要回到第一个元素,你可以剪断字符串,把不需要的卡片交还给他,他会再利用它们(它们毕竟是干抹掉的)。这就是流如何表示无限序列而不耗尽内存的方法。 |
![]() |
2
10
|
![]() |
davidzxc574 · 将字符串缩放为字符 2 年前 |
![]() |
yic_l · 什么是“!”在这个函数中是什么意思? 2 年前 |
![]() |
Jelly · Scala:用于理解递归未来 2 年前 |
![]() |
bbgghh · 在scala中连接两个列表时如何处理不匹配的键 3 年前 |
![]() |
Iheb Mar · 卡夫卡制作人/消费者粉碎每一秒的API调用 3 年前 |
![]() |
B. Bal · 在Scala中重用类成员 3 年前 |