我一直在努力學習scala的細節,最近我遇到了一些我很好奇的東西。Scala:爲什麼List [=> Int]不工作?
據我所知,如果我想傳遞一個有效懶惰地評估,以一個函數的代碼塊,(不當場評估它)我可以輸入:
def run(a: =>Int):Int = {...}
在這個意義上,該函數運行接收一個代碼塊,該代碼塊尚未被評估,它將評估並返回計算出的Int。然後我試圖將這個想法擴展到List數據結構。打字:
def run(a: List[=>Int]) = {...}
但是,這會返回錯誤。我想知道爲什麼這是不允許的。除了這個語法之外,我可以傳遞一個未評估的代碼塊列表嗎?
啊!這應該這樣做,感謝金的回答。由此,JVM是否將一個匿名函數(如上面列表中存儲的函數)放在堆中? –
是的,它們存儲在堆中。 –