5
私は、readline(Ctrl-l、矢印キー、行編集、履歴など)をサポートして、インタラクティブなシェルをscalaで書いています。readlineをサポートしているインタラクティブシェルをscalaで書くには?
私はPythonでそれを行う方法を知っている:
# enable support for Ctrl-l, arrow keys, line editing, history, etc.
import readline
finished = False
while not finished:
try:
line = raw_input('> ')
if line:
if line == 'q':
finished = True
else:
print line
except KeyboardInterrupt:
print 'Ctrl-c'; finished = True
except EOFError:
print 'Ctrl-d'; finished = True
私は正確同じ動作で、簡単なScalaのプログラムを書きたいです。今まで私の最も近いソリューションは、以下のスカラ座である:
// used to support Ctrl-l, arrow keys, line editing, history, etc.
import scala.tools.jline
val consoleReader = new jline.console.ConsoleReader()
var finished = false
while (!finished) {
val line = consoleReader.readLine("> ")
if (line == null) {
println("Ctrl-d")
finished = true
} else if (line.size > 0) {
if (line == "q") {
finished = true
} else {
println(line)
}
}
}
オープンな質問は以下のとおりです。
Ctrl-Cキーを処理するための方法を- ?
- Pythonと同様に例外を使用することは可能ですか?
- はこの最適な解決策ですか、それとも改善することができますか?