0 prolog
say_hi:-
write('Your name? '),
read(X),
write('hi'),
write(X).
Run Code Online (Sandbox Code Playgroud)
这是我的代码但是!!!当我运行它时就会发生这种情况。为什么?
?- say_hi.
Your name? Ali.
hi_884
true.
Run Code Online (Sandbox Code Playgroud)
这不是给予
> hi Ali
Run Code Online (Sandbox Code Playgroud)
。为什么?
请指导我并给我简单的代码来读取和写入名称。每次输入不同的名称都会给出不同的数字。
发生这种情况是因为 read/1 旨在解析Prolog 术语,而以大写字母开头的字母序列是一个变量。按照惯例,奇怪的输出是 Prolog 显示未实例化_NNN
变量的方式。在 SWI-Prolog 中,您可以使用read_line_to_codes/2或 read_line_to_string/2 来获取字符串。例如
?- read_line_to_string(user_input,S).
|: Ali
S = "Ali".
Run Code Online (Sandbox Code Playgroud)