我想在程序的开头添加简短的信息,我就是这样
message :-
nl,nl,
write(' To start type '), nl,
write(' ?- solve(Input1,Input2,Output3) '), nl.
:- message.
Run Code Online (Sandbox Code Playgroud)
这很好......但是我需要写('? - solve('Input1','Input2',Output3)'),所以当我运行程序时它应该打印到开始类型? - 解决(' Input1 ',' Input2 ',Output3 )
提前致谢 :)
用反斜杠逃脱报价.
例如,要输出单个单引号:
?- write('\'').
'
true.
Run Code Online (Sandbox Code Playgroud)
作为一般规则,您当然应该完全避免副作用 .一个好的解决方案是使用DCG 描述输出.这使得它适用于测试案例,如果输出仅出现在终端上,则难以写入.
write/1特别是很少使用.如果你真的需要输出一些东西,请使用format/2.如果你知道DOS,这听起来很可怕,但事实并非如此.
一个重要的优点format/2是它可以让您方便地使用灵活的参数来构建静态文本,例如:
?- member(X, [friend,foe,love]),
format("hello my '~q'!\n", [X]),
false.
产量:
hello my 'friend'! hello my 'foe'! hello my 'love'!
请注意,在这种情况下甚至不会出现单引号的问题.类似的问题"可以通过使用\以下方法再次解决:
?- format("a \"test\"", []).
a "test"