2013-08-31 26 views
7

Scala'yı kullanarak tanıtıcı bir programlama dersi veriyorum. REPL ile başlıyoruz. REPL, bir öğrenci readLine komutuna girdiğinde, girdilerinin yankılanmadığı bir hatadır. Önerebileceğim veya sağlayabileceğim bir çözüm var mı?Scala REPL'de kullanıcı girişi nasıl eklenir?

Eclipse kullanırken bu sorunla karşılaşmam, ancak Eclipse'i öğrencilerime tanıtmadan önce birkaç hafta alacağım.

+0

@ som-snytt 'reader.readLine 'bazı garip nedenlerden dolayı 2.10 ile çalışmıyor. Sanırım sorun bu. – gourlaysama

cevap

2

Kullanım scala -Xnojline: Daha önceki komutları değiştiremezsiniz böylece

scala> val l = readLine 
test 
l: String = test 

Ancak bu, özellikle ok tuşlarıyla olmak üzere bazı şeyleri kırmak yok.

Eğer varsa, bu işlevleri geri yüklemek için rlwrap scala -Xnojline (cygwin'de de mevcut olabilir) kullanabilirsiniz.

this post için tam not.

4

REPL okuyucusuna erişmek için güç modunu kullanabilirsiniz;

scala> :power 
** Power User mode enabled - BEEP WHIR GYVE ** 
** :phase has been set to 'typer'.   ** 
** scala.tools.nsc._ has been imported  ** 
** global._, definitions._ also imported ** 
** Try :help, :vals, power.<tab>   ** 

scala> repl.in.readLine("enter something: ") 
enter something: hello world 
res0: String = hello world 

scala> 

Edit: @ som-snytt belirttiği gibi, 2.11 yılında hem daha kısa ve hatırlamak daha kolaydır Yukarıdaki kodu, içinde reader yerine repl.in kullanabilirsiniz bu size tam readLine çalışma verecektir .

+0

Teşekkürler! repl.in.readLine mükemmel çalışır; reader.readLine yok. Windows'ta
, ben hata alıyorum değeri okuyucu: not found: Benim Mac'te
, ben hata alıyorum sınıf Küresel değer okuyucu scala.tools.nsc.Global içinde erişilemez
repl.in.readLine olduğunu Her halükarda öğrencilerim için muhtemelen daha iyi, çünkü bunun sadece REPL için olduğunu vurguluyor. –

İlgili konular