Ho lavorato per imparare i dettagli di scala, e recentemente mi sono imbattuto in qualcosa di cui sono curioso.Scala: perché non List [=> Int] funziona?
quanto ho capito, se voglio passare un blocco di codice che viene efficacemente pigramente valutata per una funzione, (senza valutare sul posto) basta digitare:
def run(a: =>Int):Int = {...}
In questo senso, la function run riceve un blocco di codice, che deve ancora essere valutato, che valuta e restituisce l'Int calcolato di. Ho quindi cercato di estendere questa idea alla struttura dei dati dell'elenco. Digitare:
def run(a: List[=>Int]) = {...}
Ciò tuttavia restituisce un errore. Mi stavo chiedendo perché questo non è consentito. In che modo, oltre a questa sintassi, posso passare un elenco di blocchi di codice non valutati?
Ah! Dovrebbe farlo, grazie per la risposta Kim. Per il verso, la JVM mette una funzione anonima, come quelle che sono memorizzate nella lista sopra, nell'heap? –
Sì, sono memorizzati nell'heap. –