4

我想在程序的开头添加简短的信息,我是这样的

message :-
    nl,nl,
    write('  To start type  '), nl,
    write(' ?- solve(Input1,Input2,Output3) '), nl.
:- message.

这很好......但我需要 write(' ?- solve('Input1','Input2',Output3) '), nl 所以当我运行程序时它应该打印 To start type ?-solve( ' Input1 ' , '输入 2 ' , 输出 3)

提前致谢 :)

4

1 回答 1

6

用反斜杠转义引号。

例如,要输出一个引号:

?- write('\'').
'
true.

作为一般规则,您当然应该完全避免副作用 。一个好的解决方案是使用 DCG描述输出。这使得它可以测试用例,如果输出仅出现在终端上,则很难编写。

write/1特别少用。如果您确实需要输出某些内容,请使用format/2. 如果您了解 DOS,这听起来很可怕,但实际上并非如此。

的一个重要优点format/2是它可以让您方便地将静态文本与灵活的参数相结合,例如:

?- member(X, [friend,foe,love]),
    format("hello my '~q'!\n", [X]) ,
   错误的。

产量:

朋友你好'!
你好,我的“敌人”!
你好我的爱人'!

请注意,在这种情况下甚至没有出现单引号问题。"可以通过使用再次解决类似的问题\

?- 格式(“一个\”测试\“”,[])。
一个测试”
于 2010-12-04T16:53:19.310 回答