2010-12-08 15 views
0

私はこの事実を私の基盤に持っています 事実( "名前"、 "姓"、 "123")。 ファクト(X、_、_): ファクト(X、_、_)。 Xについては、未確認の出力があります。 この値を取得する方法、またはこの出力を取得する方法はありますか。 ?-fact(X、_、_) 出力:名前。プロローグで文字列を操作する方法は?

ありがとうございます。

+0

てみてください。実際に(X、_、_)をしてみてください。 (最後の2つの引数はアンダースコアです) – gusbro

答えて

2

Prologの文字列は、一重引用符で囲みます。二重引用符を使用すると、文字コードのリストが必要になります。 SWI-Prologで

?- is_list('abc'). 
false. 

?- is_list("abc"). 
true. 

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

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

? - 文字列( 'abc')。 false。 (SWI-Prologで) – Kaarel

+6

Prologの文字列は、通常、文字コードのリストの構文的な砂糖である* double * quotesで囲まれています。 ** PrologのAtoms **は一重引用符で囲まれています。 – sharky

2

あなたは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; 
関連する問題