2010-06-14 16 views
6

Ho scritto una piccola libreria che utilizza impliciti per aggiungere funzionalità di cui uno ha bisogno solo quando si utilizza il REPL in Scala. Ruby ha librerie come questa - per cose come la bella stampa, accendendo editor di testo (come la gemma interactive_editor che invoca Vim da irb - vedi this post), debugger e simili. La libreria che sto cercando di scrivere aggiunge alcuni metodi alle classi java.lang.Class e java.lang.reflect usando il processo di conversione implicito di 'pimp my library' per aiutarti a trovare la documentazione (inizialmente, con Google, e poi eventualmente con un visualizzatore JavaDoc/ScalaDoc e forse anche l'API StackOverflow!). È una libreria che graffia i pruriti: trascorro così tanto tempo a copiare e incollare i nomi di classe in Google che ho pensato che possa anche automatizzare il processo.Esiste una versione di Scala di .irbrc o un altro modo per definire alcune librerie predefinite per uso REPL?

È il tipo di funzionalità che gli sviluppatori vorranno aggiungere al proprio sistema per l'utilizzo solo in REPL - non dovrebbero davvero aggiungerlo ai progetti (in parte perché potrebbe non essere qualcosa che i loro colleghi sviluppatori vogliono, ma anche perché se stai facendo uno sviluppo esplorativo, potrebbe essere solo con un REPL di Scala che non viene invocato da un IDE o uno strumento di costruzione).

Nel mio caso, desidero includere alcune classi e impostare alcuni impliciti: includere un .jar sul CLASSPATH e importarlo, in pratica.

In Ruby, questo è il tipo di cosa che dovresti aggiungere al tuo file .irbrc. Altri REPL hanno metodi simili per impostare opzioni e importare librerie.

C'è un file simile o un modo per farlo per il REPL di Scala?

+0

Ho trasformato questo in una richiesta di miglioramento su Scala Trac: https://lampsvn.epfl.ch/trac/scala/ticket/3637 –

risposta

1

Non sono sicuro se questo è ciò che si sta cercando, ma se si inseriscono dei vasi nella directory SCALA_HOME\lib. Quindi questi vasi saranno disponibili per l'importazione nel REPL (usando la parola chiave import).

MODIFICA: L'opzione più conveniente al momento è impostare la variabile di ambiente CLASSPATH.Tutti i vasi a cui si fa riferimento nella variabile CLASSPATH sono anche disponibili per l'importazione in REPL.

1

risposta rapida, probabilmente non è quello che state cercando, ma per quanto riguarda la digitazione

: percorso di carico/a/some/Scala/script/file.scala

nella console?

: il caricamento verrà letto in un file scala ed eseguito come script.

Un'altra opzione è utilizzare sbt impostare le dipendenze ed eseguire il comando della console.

L'ultima opzione che posso pensare è quella di impostare manualmente il classpath sulla riga di comando e puntarlo verso le cartelle di file jars/class che si desidera vengano rilevate dalla jvm.

Fatemi sapere se questo interesse vi interessa e posso fornire ulteriori dettagli se necessario.

2

Nella riga di comando, è possibile utilizzare l'opzione -i per caricare un file durante l'avvio del REPL:

scala -cp mystuff.jar -i mydefs.scala 

Naturalmente si potrebbe avvolgere questo in uno script di shell o un file batch ed eseguire che al posto del normale scala comando.

(Sto usando Scala 2.8.0 RC3).

Problemi correlati