1

我是 Eclipse 的新手,我一直在尝试读取文件流但没有成功。我通常在 SWI-Prolog 中使用的代码是这样的:

read_until_stop(File, [L|Lines]) :-
    read_line_to_codes(File, Codes),
    Codes \= end_of_file,
    atom_codes(L, Codes),
    L \= stop,
    !,
    read_until_stop(File, Lines).
read_until_stop(_, []).

read_line_to_codes显然在 Eclipse 中不可用。有什么好的选择呢?

4

2 回答 2

1

我认为 read_line_to_codes/2 可以很容易地在 ECLiPSe 中实现,但是为了效率重用可用的内置函数。你可以用read_line /2 来做。

尝试定义

:- use_module(library(util)).
read_line_to_codes(S, L) :- read_line(S, L).

或者干脆调用 read_line...

于 2013-07-26T08:29:20.843 回答
1

正如Eclipse 手册所建议的,Eclipse 对应物将是

read_line(Stream, String) :-
    read_string(Stream, end_of_line, _Length, String).

不同的是read_string返回实际字符​​串而不是代码列表,即atom_codes不再需要:

?- read_string(input, end_of_line, Length, String).
      abcdefghi
      Length = 9
      String = "abcdefghi"
      yes.
于 2013-07-26T08:16:04.917 回答