2016-03-25 13 views
0

retractの戻り値を使用することはできますか?プロローグでブール値を引っ込める方法は?

ブール値の代わりに、 の代わりに単語を出力する関数を作成したいので、リトラクト値を比較してステートメントを出力しようとしましたが、動作していないようです。

+0

あなたは何をしようとしているのですか? – SQB

+0

あなたのコードを表示してください。何をしようとしていますか? – lurker

答えて

0

述語retract/1は、他の述語と同様に成功または失敗することができます。上記の例で


:- assert(a). 

test :- 
    retract(a), 
    writeln('a used to be true, but not any more.'), !. 

test :- 
    writeln('a was false'). 

test.を評価する場合、retract(a)は成功し、そうwriteln('...')は常に成功した、評価されます。
その後、カットされるので、2番目の節に戻ることはできません。 assert(a)この例では

%:- assert(a). 

test :- 
    retract(a), 
    writeln('a used to be true, but not any more.'), !. 

test :- 
    writeln('a was false'). 


は、 retract(a)が失敗し、コメントアウトされているので、私たちは「偽だった」書き込むことで成功する test/0の第二節、に着きます。

+0

ありがとうございます。私はちょうどそれがどのように動作するか知りたい – Hansel

+0

喜んで助けてください。それがあなたを助けたら答えを受け入れることを忘れないでください(あなたはそれを隣のチェックマークをクリックすることで行うことができます)。 – SQB

関連する問題