2010-06-14 1 views
6

J'ai écrit une petite bibliothèque qui utilise implicits pour ajouter des fonctionnalités dont on a seulement besoin quand on utilise REPL dans Scala. Ruby a des librairies comme celle-ci - pour des choses comme une jolie impression, le lancement d'éditeurs de texte (comme la gem interactive_editor qui invoque Vim from irb - voir this post), les débogueurs et autres. La bibliothèque que j'essaie d'écrire ajoute des méthodes aux classes java.lang.Class et java.lang.reflect en utilisant le processus de conversion implicite 'pimp my library' pour vous aider à aller chercher de la documentation (d'abord avec Google, puis plus tard éventuellement avec une visionneuse JavaDoc/ScalaDoc, et peut-être l'API StackOverflow par la suite!). C'est une bibliothèque démangeaisons: je passe tellement de temps à copier et coller des noms de classe dans Google que j'ai pensé que je pourrais aussi bien automatiser le processus. C'est le genre de fonctionnalité que les développeurs voudront ajouter à leur système pour l'utiliser uniquement dans le REPL - ils ne devraient pas vraiment l'ajouter aux projets (en partie parce que ce n'est peut-être pas ce que veulent leurs collègues développeurs, mais aussi parce que si vous faites un développement exploratoire, il peut s'agir d'un Scala REPL qui n'est pas invoqué par un IDE ou un outil de construction).Existe-t-il une version Scala de .irbrc ou une autre façon de définir des bibliothèques par défaut pour l'utilisation de REPL?

Dans mon cas, je veux inclure quelques cours et mettre en place des implicits - inclure une .jar sur le CLASSPATH et l'importer, au fond.

Dans Ruby, c'est le genre de chose que vous souhaitez ajouter à votre fichier .irbrc. D'autres REPL ont des manières similaires de définir des options et d'importer des bibliothèques.

Existe-t-il un fichier ou un moyen similaire pour la Scala REPL?

+0

Je l'ai transformé en une demande d'amélioration sur le Scala Trac: https://lampsvn.epfl.ch/trac/scala/ticket/3637 –

Répondre

1

Je ne sais pas si cela est ce que vous cherchez, mais si vous mettez des pots dans votre répertoire SCALA_HOME\lib. Ces fichiers seront ensuite importés dans le REPL (en utilisant le mot-clé import).

EDIT: L'option la plus pratique que maintenant est en réglant la variable d'environnement CLASSPATH.Tous les jars référencés dans la variable CLASSPATH peuvent également être importés dans le REPL.

1

réponse rapide sans doute pas ce que vous recherchez, mais qu'en tapant

: chemin de charge/à/some/scala/script/file.scala

dans la console?

: load va lire dans un fichier scala et l'exécuter comme un script.

Une autre option consiste à utiliser sbt configurer vos dépendances et exécutez la commande de la console.

La dernière option à laquelle je peux penser est de définir manuellement le chemin de classe sur la ligne de commande et de le pointer vers les dossiers de fichiers jars/class que vous voulez que le jvm connaisse.

Laissez-moi savoir si tout cela vous intéresse et je peux fournir plus de détails si nécessaire.

2

Sur la ligne de commande, vous pouvez utiliser l'option -i pour charger un fichier lors du démarrage du REPL:

scala -cp mystuff.jar -i mydefs.scala 

Ofcourse vous pouvez envelopper dans un script shell ou un fichier batch et exécuter, au lieu de la normale scala commande.

(J'utilise Scala 2.8.0 RC3).

Questions connexes