2010-06-14 12 views
6

Scala'da REPL kullanırken yalnızca ihtiyaç duyulan işlevsellik eklemek için implicits kullanan küçük bir kitaplık yazdım. Ruby'nin bu gibi kütüphaneleri vardır - güzel baskılar, metin editörlerini ateşleme (Vim'i irb'den alan interaktif_editor gem gibi - bkz. this post), hata ayıklayıcılar ve benzerleri. Yazmaya çalıştığım kitaplık, 'pimp kitaplığım' örtük dönüştürme işlemini kullanarak java.lang.Class ve java.lang.reflect sınıflarına bazı yöntemler ekliyor ve belgeleri bulmaya yardımcı oluyor (başlangıçta Google ile, daha sonra muhtemelen Bir JavaDoc/ScalaDoc görüntüleyici ve belki de StackOverflow API'sı sonunda!). Kaşınmayı kaşıyan bir kütüphane: Sınıfları Google'a kopyalamak ve yapıştırmak için çok fazla zaman harcıyorum. Bu, süreci otomatik hale getirebileceğimi düşündüm..irbrc'nin Scala sürümü veya REPL kullanımı için bazı varsayılan kitaplıkları tanımlamanın başka bir yolu var mı?

Geliştiricilerin kendi sistemlerine yalnızca REPL'de kullanılmak üzere eklemek isteyecekleri bir çeşit işlevselliktir - projelere gerçekten eklenmemeleri gerekir (bunun nedeni kısmen diğer geliştiricilerin istediği bir şey olmayabilir; ama aynı zamanda, bazı keşifsel geliştirme yapıyorsanız, bir IDE veya oluşturma aracı tarafından çağrılmayan bir Scala REPL ile olabilir).

Benim durumumda, birkaç sınıf eklemek ve bazı durumlar oluşturmak istiyorum - CLASSPATH üzerinde bir .jar içer ve temel olarak içe aktar.

Ruby'de, bu .irbrc dosyanıza ekleyeceğiniz türden bir şeydir. Diğer REPL'lerin seçenekleri ayarlama ve kitaplıkları içe aktarma gibi yöntemleri vardır.

Scala REPL için benzer bir dosya veya bunun yolu var mı?

+0

Bunu Scala Trac'teki bir geliştirme isteğine dönüştürdüm: https://lampsvn.epfl.ch/trac/scala/ticket/3637 –

cevap

1

Aradığınız şeyin bu olduğundan emin değilsiniz, ancak SCALA_HOME\lib dizininize herhangi bir kavanoz koyarsanız. Daha sonra bu kavanozlar REPL'de (import anahtar sözcüğünü kullanarak) alınabilir.

DÜZENLEME: Şu anki en uygun seçenek CLASSPATH ortam değişkeninin ayarlanmasıdır.CLASSPATH değişkeninde atıfta bulunulan herhangi bir kavanoz REPL'te içe aktarılabilir.

1

Hızlı cevap muhtemelen aradığınız ama ne

yazarak ilgili olan değil ne: konsolda yük/yol/bazı/Scala/script/file.scala

?

: yük bir scala dosyasında okunacak ve komut dosyası olarak yürütülecektir.

Başka bir seçenek de bağımlılarınızı ayarlamak ve konsol komutunu çalıştırmak için sbt kullanmaktır.

Düşünebildiğim son seçenek, komut satırında sınıf yolunu elle ayarlamak ve jvm'nin bilmesini istediğiniz kavanoz/sınıf dosya klasörlerini işaret etmektir.

Bu ilgi alanlarınızdan herhangi biri sizin için gerekli ise daha fazla bilgi sağlayabiliriz.

scala -cp mystuff.jar -i mydefs.scala 

Bir kabuk veya toplu dosya ve koşmak yerine normal bu sarabilirdiniz Tabii: Çoğaltma başlatılırken

komut satırında
2

, bir dosyayı yüklemek için -i seçeneğini kullanabilirsiniz scala komutu.

(Scala 2.8.0 RC3 kullanıyorum).