Scala: Warum funktioniert List [= Int] nicht?

8

Ich habe daran gearbeitet, alles über scala zu lernen, und in letzter Zeit bin ich auf etwas gestoßen, auf das ich neugierig bin.

Wie ich verstehe, wenn ich einen Block Code übergeben möchte, der effektiv zu einer Funktion ausgewertet wird (ohne es sofort zu bewerten), könnte ich tippen:

%Vor%

In diesem Sinne erhält die Funktion run einen noch zu bewertenden Codeblock, den sie auswertet und den berechneten Int von zurückgibt. Ich habe dann versucht, diese Idee auf die List-Datenstruktur zu erweitern. Eingabe:

%Vor%

Dies gibt jedoch einen Fehler zurück. Ich habe mich gefragt, warum das nicht erlaubt ist. Wie kann ich außer dieser Syntax eine Liste nicht evaluierter Code-Blöcke weitergeben?

    
Chris Grimm 01.01.2013, 04:46
quelle

2 Antworten

8

=>Int ist die Syntax für Namensparameter. =>Int ist kein Typ und kann daher nicht als Parameter für List verwendet werden. % Co_de% ist jedoch ein Typ. Es ist die Art der Nullfunktionen, die ()=>Int zurückgeben. So funktioniert das:

%Vor%     
Kim Stebel 01.01.2013 05:09
quelle
5

by-name Parameter ist kein erstklassiger Typ in Scala.

List[()=>Int] ist eine der Lösungen. Andernfalls können Sie die folgende Lazy -Datenstruktur verwenden.

Kenji Yoshida 01.01.2013 05:25
quelle

Tags und Links