4 Stimmen

Welchen Typ gibt die Scala REPL aus?

Wenn ich eine kleine Map in der Replik erstelle, sagt sie mir, dass ihr Typ immutable.Map ist.

scala> Map(1->1, 2->2)                                    
res8: scala.collection.immutable.Map[Int,Int] = Map((1,1), (2,2))

Dies ist jedoch nicht die ganze Wahrheit, denn in diesem Fall

scala> Map(1->1, 2->2).getClass
res9: java.lang.Class[_] = class scala.collection.immutable.Map$Map2

Wie entscheidet Scala, was als Typ eines Ausdrucks ausgegeben werden soll?

7voto

Jean-Philippe Pellet Punkte 57683

Die kurze Antwort ist, dass die Scala REPL den statischen Typ Ihrer Ergebnisse ausgibt, wie er aus Ihrem Ausdruck abgeleitet wird Map(1->1, 2->2) und getClass gibt den dynamischen Typ zurück, der ein Subtyp des statischen Typs sein kann.

Eine längere Antwort würde sich damit befassen, wie die Typinferenzmaschine von Scala funktioniert. Vielleicht möchten Sie die entsprechenden Abschnitte in der Scala-Sprachreferenz .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X