1

私は保存する方法を探しており、フォームを送信し、同じプログラムを呼び出して別のフォームを生成するときに、SWI-PrologでWebフォームの引数を処理した後などです。あるフォームから次のフォームに常に同じプロローグプログラムを呼び出す。
CGI SWI-Prologライブラリは、これらの引数をName(Value)用語のリストとして保存します[Name(Value)]


フォーム内の隠し引数のように引数を渡すと(TotalArgumentsはリストです):

format('"<" input type = "hidden" id = "nameofform1" name = "nameofform1" value = "〜w" />〜n'、TotalArguments)、

追加するときに、TotalArgumentsの結果リストに連結されているIDまたは名前を削除する必要があります。最終的なリストが次のようになるようにこれを行う方法についてのアイデアはあります[nameofform1(value1), nameofform2(value2),...]か?


この引数のリストを書き込んでファイルに追加し、プログラムが再度呼び出されるたびに参照することもできますが、これにより常に引数が読み込まれ、特定のステップで必要な引数とで処理されるフォームのみを読み込む必要があります。一瞬。そうしないと、実行後にこのファイルに望ましくない情報が含まれる可能性があるためです。この方法でそれを行う方法について何か考えはありますか?
この種の問題に関する他の提案はありますか?


隠しフォーム
を使用してソリューションを編集します。次を作成して解決しました。

  extract_value([],_).
  extract_value([A0|__ ], Valor) :-
     A0 =.. [_, Value],
     Valor is Value.

そして、次のことを行います。

extract_value(Arguments、Value)、

次のようなフォームの隠された値を送信します。

format('<"input type = "hidden" id = "nameofform1" name = "nameofform1" value = "〜w" />〜n'、[Value])、

次のフォームに追加して、希望どおりに表示されるようにします。

[nameofform2(value2)、nameofform1(value1)]

4

1 に答える 1

2

ここで正確に何が必要かは私には少しわかりませんが、特定の要素と統合するリストの最初の要素を削除するには(特に、リストにそのような要素が含まれていることが確実にわかっている場合)、selectkchk/3を使用します。例えば:

selectchk(id(_), List0, List1),
selectchk(name(_), List1, List)

id(_)Listを取得するために、これは要素と。を含まないList0name(_)です。私が理解しているように、あなたの質問に暗黙のうちにあるのは、name(form1)とValueという用語を指定して、「form1(Value)」のような用語を作成する方法のようです。これは、たとえば=../2で実行できます。ファンクターNと引数Argsを使用して項Tを作成できます。

T =.. [N|Args]

ここでファイルに何も書き込む必要はないようです。概要を説明するのと同じように、フォームを介して情報を渡すだけです。

于 2012-05-03T11:27:43.373 に答える