2016-04-18 3 views
8

Esiste un metodo preciso per stampare il nome classe di una variabile in Scala?in Scala

A volte vedo val result = foo(a,b,c), poiché il metodo foo può restituire diversi tipi di oggetto e se potessi stampare il tipo di risultato, sarà fantastico.

+1

In intellij puoi usare 'alt' +' = ' –

+0

@ Łukasz, grazie e vota, e intendo in console quando il programma è in esecuzione in modo dinamico, poiché i tipi vengono decisi eseguendo il valore in modo dinamico. :) –

risposta

11

rapido e sporco trucco che uso spesso

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

Il compilatore solleverà un errore, che vi fornirà informazioni circa il tipo effettivo di ritorno ha trovato.

Esempio dal 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 

Se si utilizza un IDE, è possibile utilizzare più opzioni "sofisticati":

+0

Grazie Gabriele, vota. C'è un modo per stampare dinamicamente il tipo dato che il metodo 'pippo' ha diversi tipi di ritorno dinamicamente e deciderà in fase di esecuzione. –

+1

@LinMa, questa è una domanda molto diversa da quella che hai chiesto :) Ho sicuramente bisogno di un esempio più completo per dare una risposta appropriata –

+1

Se vuoi una vera classe di runtime, usa 'result.getClass'. 'Set (1) .getClass' restituirebbe 'classe scala.collection.immutable.Set $ ​​Set1' –