私はこの事実を私の基盤に持っています 事実( "名前"、 "姓"、 "123")。 ファクト(X、_、_): ファクト(X、_、_)。 Xについては、未確認の出力があります。 この値を取得する方法、またはこの出力を取得する方法はありますか。 ?-fact(X、_、_) 出力:名前。プロローグで文字列を操作する方法は?
ありがとうございます。
私はこの事実を私の基盤に持っています 事実( "名前"、 "姓"、 "123")。 ファクト(X、_、_): ファクト(X、_、_)。 Xについては、未確認の出力があります。 この値を取得する方法、またはこの出力を取得する方法はありますか。 ?-fact(X、_、_) 出力:名前。プロローグで文字列を操作する方法は?
ありがとうございます。
Prologの文字列は、一重引用符で囲みます。二重引用符を使用すると、文字コードのリストが必要になります。 SWI-Prologで
?- is_list('abc').
false.
?- is_list("abc").
true.
?- write("abc").
[97,98,99]
true.
?- write('abc').
abc
true.
あなたはstring_to_atom/2
を使用することができます。
?- assert(fact("name", "surname", "123")).
true.
?- fact(Tmp, _, _), string_to_atom(Tmp, X).
Tmp = [110, 97, 109, 101],
X = name.
ありがとうございます。 これは私が探していたものです。 – Fuzion
は、この、
| ?- assert(fact("name", "surname", "123")).
yes
| ?- fact(X,_,_).
X = [110,97,109,101];
| ?- fact(_X,_,_),name(Y,_X).
Y = name;
てみてください。実際に(X、_、_)をしてみてください。 (最後の2つの引数はアンダースコアです) – gusbro