为啥Iterator对象不能直接打印出来?
这是由于Iterator对象应用了惰性 计算,啥是惰性计算呢?
在编程语言理论中,惰性求值(英语:Lazy Evaluation),又译为惰性计算、懒惰求值,也称为传需求调用(call-by-need),是一个计算机编程中的一个概念,它的目的是要最小化计算机要做的工作。它有两个相关而又有区别的含意,可以表示为“延迟求值”和“最小化求值”,本条目专注前者,后者请参见最小化计算条目。除可以得到性能的提升外,惰性计算的最重要的好处是它可以构造一个无限的数据类型。
延迟求值特别用于函数式编程语言中。在使用延迟求值的时候,表达式不在它被绑定到变量之后就立即求值,而是在该值被取用的时候求值,也就是说,语句如x:=expression; (把一个表达式的结果赋值给一个变量)明显的调用这个表达式被计算并把结果放置到x中,但是先不管实际在x中的是什么,直到通过后面的表达式中到x的引用而有了对它的值的需求的时候,而后面表达式自身的求值也可以被延迟,最终为了生成让外界看到的某个符号而计算这个快速增长的依赖树。
延迟求值的一个好处是能够建立可计算的无限列表而没有妨碍计算的无限循环或大小问题。例如,可以建立生成无限斐波那契数列表的函数(经常叫做“流”)。第n个斐波那契数的计算仅是从这个无限列表上提取出这个元素,它只要求计算这个列表的前n个成员。
惰性的好处:
一、是这样我们就可以实现的无限序列的表示,比如全部的自然数(无穷尽),而不需要真的在内存中计算出所有的自然数(那根本不可能,因为内存也不是无限的),而是需要哪个数,计算到哪个数,或者需要哪些数,计算到那些数(比如前1000个)。
二、是在大规模数据处理中起到延迟计算的作用。当你处理大规模数据时,一次性进行处理往往是不方便的。而惰性序列就可以解决这个问题,它把计算的步骤延迟到了要实际使用该数据的时候。








暂无数据