Zeigt abgeleitete Typen von Scala-Ausdrücken

8

Wie kann ich die Typen sehen, die der Scala-Compiler für Ausdrücke etc. verwendet? Ich habe einen Code mit komplizierter Typinferenz und impliziten Konvertierungen, und es ist schwer zu erkennen, was gerade passiert, wenn man den Code liest.

Ich habe versucht,

hinzuzufügen %Vor%

in build.sbt, aber das hat keine Auswirkung.

Scalac direkt zu verwenden ist nicht sehr ansprechend, weil ich viele Abhängigkeiten habe.

Ich benutze das Eclipse Scala Plugin und ENSIME um Code zu schreiben und SBT um zu bauen.

    
Robin Green 10.02.2012, 15:29
quelle

4 Antworten

2

Diese genaue Funktion wurde in Eclipse Scala IDE 3.0 hinzugefügt!

Wählen Sie einen Teil des Codes und drücken Sie Strg-Umschalt-W T (Ersetzen von Strg durch Cmd auf Mac), um den abgeleiteten Typ zu sehen.

    
Robin Green 05.04.2013, 19:17
quelle
4

Es muss

sein %Vor%

stattdessen.

Leider ist die Ausgabe nicht gut lesbar. : (

    
Robin Green 10.02.2012 16:57
quelle
0

Heben Sie den Ausdruck auf einen nicht-lokalen def oder val ohne expliziten Typ auf - dann wird er in der Gliederungsansicht in Eclipse angezeigt, wobei ein abgeleiteter Typ zugewiesen ist.

Dies ist jedoch keine ideale Lösung, da es einige Arbeit erfordert und nicht verwendet werden kann, wenn eine Rekursion beteiligt ist.

    
Robin Green 20.02.2012 09:30
quelle
0

Ich habe gerade zu diesem Thema eine Frage vorbereitet. Es ist wahrscheinlich am besten, dass ich es hier einfüge (bitte flamme mich nicht, damit das keine Antwort ist ..).

Ich habe Robin Green's Lösung versucht, aber (wie Sie wissen) gibt es mehr Output als nötig.

Hier geht es:

Da ich für Scala neu bin und den abgeleiteten Typ-Mechanismus, denke ich, dass es oft nützlich wäre, etwas in der Art zu tun:

%Vor%

Das imaginäre spitType wäre wie ein kompilierbares Makro (ähnlich wie #pragma warning in C ++), das die Typinformationen des Ausdrucks zur Kompilierzeit ausspuckt.

Ich weiß, dass ich solche Informationen zur Laufzeit erhalten kann, aber in Fällen, in denen der Rest des Codes noch nicht kompiliert wird, wäre eine Kompilierungsnachricht die einzig nützliche Sache.

Würdest du diese Fähigkeit nützlich oder einfach irrelevant finden?

    
akauppi 15.10.2012 13:29
quelle

Tags und Links