2011-12-31 21 views
16

C'è un modo in Scala per trovare e visualizzare tutti gli usi impliciti nel mio codice, o compilare senza impliciti abilitati (quindi ricevo errori di compilazione)? Spero di identificare i luoghi in cui alloco involontariamente memoria extra nei loop interni.Trova tutti i numeri impliciti

risposta

18

È possibile utilizzare l'opzione -Xprint:typer e osservare come vengono controllati i loop interni di interesse. Le chiamate implicite appariranno nel codice sorgente stampato. Potrebbe essere necessario reindirizzare l'output a un file in modo da poter cercare le sezioni interessanti.

Anche gli allarmi IDE di Scala Eclipse al http://scala-ide.org/download/nightly.html hanno una funzione implicita di visualizzazione. Devi abilitarlo nelle preferenze , Scala, Implicita nella sezione.

Le doppie frecce sul margine sinistro mostra che un implicito viene utilizzato:

enter image description here

On presso, mostra i dettagli:

enter image description here

IDEA scala plugin può anche mostra conversioni implicite con sottolineatura, vedere la stessa parte di codice:

enter image description here

Si deve anche mostrare quale viene utilizzato utilizzando la scorciatoia Ctrl-Shift-Q, ma ho avuto meno successo con esso ...

11

Da ieri (è solo una coincidenza) c'è -Xlog- implicite conversioni.

scalac -Xlog-implicit-conversions -d /tmp /scala/trunk/src/library/scala/util/Random.scala 
/scala/trunk/src/library/scala/util/Random.scala:115: applied implicit conversion from Int to ?{val to: ?} = implicit def intWrapper(x: Int): scala.runtime.RichInt 
    for (n <- buf.length to 2 by -1) { 
       ^
Problemi correlati