2010-06-14 6 views
6

He escrito una pequeña biblioteca que usa implícitos para agregar funcionalidad que solo se necesita cuando se usa el REPL en Scala. Ruby tiene bibliotecas como esta, para cosas como imprimir bastante, encender editores de texto (como la gema interactive_editor que invoca a Vim de irb, ver this post), depuradores y similares. La biblioteca que intento escribir agrega algunos métodos a las clases java.lang.Class y java.lang.reflect usando el proceso de conversión implícita 'pimp my library' para ayudarlo a buscar documentación (inicialmente, con Google, y luego posiblemente con un visor JavaDoc/ScalaDoc, ¡y tal vez la API StackOverflow eventualmente!). Es una biblioteca que rasca la picada: Paso tanto tiempo copiando y pegando nombres de clases en Google que pensé que también podría automatizar el proceso.¿Hay una versión Scala de .irbrc u otra forma de definir algunas bibliotecas predeterminadas para el uso de REPL?

Es el tipo de funcionalidad que los desarrolladores querrán agregar a su sistema para usar solo en REPL; no deberían realmente agregarlo a proyectos (en parte porque puede no ser algo que sus compañeros desarrolladores quieran, pero también porque si estás haciendo un desarrollo exploratorio, puede ser con solo un Scala REPL que no esté siendo invocado por un IDE o una herramienta de compilación).

En mi caso, quiero incluir algunas clases y configurar algunas implícitas: incluir un .jar en CLASSPATH e importarlo, básicamente.

En Ruby, este es el tipo de cosa que agregaría a su archivo .irbrc. Otros REPL tienen formas similares de configurar opciones e importar bibliotecas.

¿Hay algún archivo similar o forma de hacerlo para Scala REPL?

+0

He convertido esto en una solicitud de mejora en el Scala Trac: https://lampsvn.epfl.ch/trac/scala/ticket/3637 –

Respuesta

1

No estoy seguro de si esto es lo que estás buscando, pero si pones algunos frascos en tu directorio SCALA_HOME\lib. Entonces esos frascos estarán disponibles para su importación en el REPL (usando la palabra clave import).

EDITAR: La opción más conveniente a partir de ahora es establecer la variable de entorno CLASSPATH.Los frascos a los que se hace referencia en la variable CLASSPATH también están disponibles para su importación en REPL.

1

respuesta rápida, probablemente no lo que están buscando, pero ¿qué pasa con escribir

: ruta de carga/a/some/Scala/script/file.scala

en la consola?

: load leerá en un archivo scala y lo ejecutará como un script.

Otra opción es usar sbt configurar sus dependencias y ejecutar el comando de la consola.

La última opción que puedo pensar es establecer el classpath en la línea de comando de forma manual y apuntarlo a las carpetas de archivos jar/clase que desea que el jvm sepa.

Háganme saber si algo de esto le interesa y le brindaré más detalles si es necesario.

2

En la línea de comandos, puede utilizar la opción -i para cargar un archivo al iniciar el REPL:

scala -cp mystuff.jar -i mydefs.scala 

Por supuesto que podría terminar con esto en un shell script o archivo por lotes y ejecución que en lugar de la normal, scala comando.

(Estoy usando Scala 2.8.0 RC3).

Cuestiones relacionadas