4

CLI プログラムでScala JLineを使用しています。正常に動作していますが、プログラムを再起動するたびに履歴が忘れられます。というクラスがあり、そのクラスにはのインスタンスを取るというメソッドがあることがFileHistoryわかります。そのメソッドを呼び出すと、履歴を含むファイルが作成またはロードおよび保存されると予想されます。しかし、そうではありません。ConsoleReadersetHistory()FileHistory

残念ながら、ドキュメントはほとんど存在しません。次回 JLine 対応プログラムを実行するときに、前回の実行で入力したコマンドを記憶するようにするにはどうすればよいですか?

アップデート

mirandes によって以下に与えられた正解。mirandes と som-snytt に感謝します。

4

2 に答える 2

5

これは私のために働いた:

import scala.tools.jline.console.ConsoleReader
import scala.tools.jline.console.history.FileHistory
import java.io.File

val reader : ConsoleReader = new ConsoleReader() 

val history = new FileHistory(new File(".history"))
reader.setHistory(history) 

アプリを終了する前に、必ず履歴をフラッシュしてください。

reader.getHistory.asInstanceOf[FileHistory].flush()
于 2013-07-31T01:09:47.500 に答える
1

コメントがあります。書類がないって言ったでしょ?

/**
 * {@link History} using a file for persistent backing.
 * <p/>
 * Implementers should install shutdown hook to call {@link FileHistory#flush}
 * to save history to disk.
 *
 * @author <a href="mailto:jason@planet57.com">Jason Dillon</a>
 * @since 2.0
 */
public class FileHistory

Scala REPL 内部履歴と比較してください。

于 2013-07-31T08:11:35.350 に答える