2016-04-18 9 views
8

Czy istnieje staranna metoda drukowania nazwy klasy w Scali?typ wydruku zmiennej w Scali

Czasami widzę , ponieważ metoda foo może zwracać różne typy obiektów i gdybym mógł wydrukować typ klasy wyników, będzie świetnie.

+1

W intellijcie możesz użyć 'alt' +' = ' –

+0

@ Łukasz, dziękuję i głosujesz, a mam na myśli w konsoli, gdy program działa dynamicznie, ponieważ typy są decydowane przez dynamiczne uruchamianie wartości. :) –

Odpowiedz

11

Szybki i brudny trik często używam

val result: Nothing = foo(a,b,c) 

kompilator zgłosi błąd, zapewniając informacje na temat rzeczywistego typu odesłać go znaleźć.

Przykład z REPL

scala> val foo: Nothing = 42 
<console>:1: error: type mismatch; 
found : Int(42) // <---- this is what you care about 
required: Nothing 
     val foo: Nothing = 42 

Jeśli używasz IDE, można wykorzystać bardziej "wyrafinowane" Opcje:

+0

Dzięki Gabriele, zagłosuj. Czy istnieje sposób dynamicznego drukowania typu, ponieważ metoda 'foo' ma różne typy zwracania dynamicznego i decyduje w czasie wykonywania. –

+1

@LinMa, to jest zupełnie inne pytanie niż to, które zadałeś :) Zdecydowanie potrzebuję bardziej kompleksowego przykładu, aby dać odpowiednią odpowiedź –

+1

Jeśli chcesz prawdziwą klasę runtime, po prostu użyj 'result.getClass'. 'Set (1) .getClass' wypisze' class scala.collection.immutable.Set $ ​​Set1' –