為啥Iterator對象不能直接打印出來?
這是由于Iterator對象應(yīng)用了惰性 計算,啥是惰性計算呢?
在編程語言理論中,惰性求值(英語:Lazy Evaluation),又譯為惰性計算、懶惰求值,也稱為傳需求調(diào)用(call-by-need),是一個計算機(jī)編程中的一個概念,它的目的是要最小化計算機(jī)要做的工作。它有兩個相關(guān)而又有區(qū)別的含意,可以表示為“延遲求值”和“最小化求值”,本條目專注前者,后者請參見最小化計算條目。除可以得到性能的提升外,惰性計算的最重要的好處是它可以構(gòu)造一個無限的數(shù)據(jù)類型。
延遲求值特別用于函數(shù)式編程語言中。在使用延遲求值的時候,表達(dá)式不在它被綁定到變量之后就立即求值,而是在該值被取用的時候求值,也就是說,語句如x:=expression; (把一個表達(dá)式的結(jié)果賦值給一個變量)明顯的調(diào)用這個表達(dá)式被計算并把結(jié)果放置到x中,但是先不管實際在x中的是什么,直到通過后面的表達(dá)式中到x的引用而有了對它的值的需求的時候,而后面表達(dá)式自身的求值也可以被延遲,最終為了生成讓外界看到的某個符號而計算這個快速增長的依賴樹。
延遲求值的一個好處是能夠建立可計算的無限列表而沒有妨礙計算的無限循環(huán)或大小問題。例如,可以建立生成無限斐波那契數(shù)列表的函數(shù)(經(jīng)常叫做“流”)。第n個斐波那契數(shù)的計算僅是從這個無限列表上提取出這個元素,它只要求計算這個列表的前n個成員。
惰性的好處:
一、是這樣我們就可以實現(xiàn)的無限序列的表示,比如全部的自然數(shù)(無窮盡),而不需要真的在內(nèi)存中計算出所有的自然數(shù)(那根本不可能,因為內(nèi)存也不是無限的),而是需要哪個數(shù),計算到哪個數(shù),或者需要哪些數(shù),計算到那些數(shù)(比如前1000個)。
二、是在大規(guī)模數(shù)據(jù)處理中起到延遲計算的作用。當(dāng)你處理大規(guī)模數(shù)據(jù)時,一次性進(jìn)行處理往往是不方便的。而惰性序列就可以解決這個問題,它把計算的步驟延遲到了要實際使用該數(shù)據(jù)的時候。








暫無數(shù)據(jù)