2010-12-04 7 views
2

私はプログラムの先頭に短い情報を追加したいと私は、この。Prologで書き込み述語に一重引用符( ')を書き込むには?

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

ようになり、これは大丈夫です...しかし、私が書く(必要」 - ?(解決 『入力1』、 『入力2』を、OUTPUT3) ')、私はそれがタイプ を開始するには を印刷する必要があり、プログラムを実行するとNL はそう - ?(解決する' 入力2 入力1 '' "、OUTPUT3)

おかげでをadvance:

+0

それが正確に何を表示する必要がありますか? 4つの先頭スペースを使用してコードスニペットをフォーマットしてください。 –

答えて

4

バックスラッシュでエスケープします。例えば、出力に

シングル単一引用符:一般的なルールとして

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

、あなたはずのコース回避副作用完全。良い解決策はに  DCGを使用しての出力を記述することです。これにより、出力が端末にしか表示されない場合、書き込みが難しいのテストケースに従うことができます。

write/1が特にあまり使用されません。実際に何かを出力する必要がある場合は、format/2を使用してください。   DOSを知っていれば、これは恐ろしいようですが、実際はそうではありません。単一引用符の問題は」didnのこと

 
hello my 'friend'! 
hello my 'foe'! 
hello my 'love'! 

注:降伏

 
?- member(X, [friend,foe,love]), 
format("hello my '~q'!\n", [X]), 
    false. 

format/2の重要な利点は、それはあなたが便利例えばフレキシブルな引数を使って静的テキストを、メッシュできることですこの場合でさえも起こる。 "と類似した問題が再び\を使用することによって解決することができます。

 
?- format("a \"test\"", []). 
a "test" 
関連する問題