2010-12-08 4 views
0

나는 사실 ("이름", "성", "123") 내 기지 에이 사실을 가지고. 나는 간단하게이 질문을 씁니다 : 사실 (X, _, _). X에 대한 몇 가지 알 수없는 출력을 얻을. 이 값을 검색하는 방법이나이 출력을 가져 오는 방법은 무엇입니까? ? -fact (X, _, _). 출력 : 이름.프롤로그에서 문자열을 조작하는 방법은 무엇입니까?

미리 감사드립니다.

+0

시도 사실 (X를, _, _). (마지막 두 인수는 밑줄입니다.) – gusbro

답변

2

프롤로그의 문자열은 작은 따옴표로 묶습니다. 큰 따옴표를 사용하면 문자 코드 목록을 원한다는 의미입니다.

?- is_list('abc'). 
false. 

?- is_list("abc"). 
true. 

?- write("abc"). 
[97,98,99] 
true. 

?- write('abc'). 
abc 
true. 
+1

? - 문자열 ('abc'). 거짓. (SWI-Prolog에서) – Kaarel

+6

프롤로그의 문자열은 일반적으로 * double * 따옴표로 묶습니다.이 따옴표는 문자 코드 목록의 구문 설탕입니다. ** Prolog의 Atoms **는 작은 따옴표로 묶습니다. – sharky

2

SWI - 프롤로그에서는 string_to_atom/2를 사용할 수 있습니다

?- assert(fact("name", "surname", "123")). 
true. 

?- fact(Tmp, _, _), string_to_atom(Tmp, X). 
Tmp = [110, 97, 109, 101], 
X = name. 
+0

고맙습니다. 그게 내가 찾고있는 것입니다. – Fuzion

0

이 시도,

| ?- assert(fact("name", "surname", "123")). 
yes 
| ?- fact(X,_,_). 
X = [110,97,109,101]; 
| ?- fact(_X,_,_),name(Y,_X). 
Y = name; 
관련 문제