2010-12-04 3 views
2

나는 프로그램의 시작 부분에서 짧은 정보를 추가 할 그리고 난이. Prolog에서 쓰기 조건부에 작은 따옴표 (')를 쓰려면 어떻게해야합니까?

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

같은 간다 그리고이 괜찮습니다 ...하지만 난 (쓰기 필요 '- (해결'입력 1 ','입력 2를 ' , 출력 3) '), 내가 그것을 유형 를 시작하려면 를 인쇄해야 프로그램을 실행할 때 NL 그래서? - (해결'입력 2 입력 1 ', ' ', 출력 3)

감사의를 advance :)

+0

정확히 무엇을 표시 하는가? 코드 스 니펫의 형식을 지정하려면 네 개의 선행 공백을 사용하십시오. –

답변

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" 
관련 문제