Pracuję nad poznawaniem scala, a ostatnio natknąłem się na coś, co mnie interesuje.Scala: dlaczego nie działa lista [=> Int]?
Jak rozumiem, jeśli chcę przekazać blok kodu, który jest skutecznie leniwie ocenianego do funkcji (bez oceniania go na miejscu) mogłem wpisać:
def run(a: =>Int):Int = {...}
W tym sensie, funkcja run otrzymuje blok kodu, który jest jeszcze oceniany, który ocenia i zwraca obliczone Int. Następnie próbowałem rozszerzyć ten pomysł na strukturę danych List. Wpisanie:
def run(a: List[=>Int]) = {...}
To jednak zwraca błąd. Zastanawiałem się, dlaczego jest to niedozwolone. Jak, poza tą składnią, mogę podać listę nieocenionych bloków kodu?
Ah! To powinno wystarczyć, dziękuję za odpowiedź Kim. Czy według JVM anonimowa funkcja, taka jak te przechowywane na powyższej liście, znajduje się w stercie? –
Tak, są one przechowywane na stercie. –