[Next]トレース [Previous]問合わせ [Up]PoPの使用方法 [Top]

結果の処理

inquire,inquire_nextで返される変数値は,PoPオブジェクトです.
PoPオブジェクトはすべて文字列化ができますので,そのままprint文に指定することや,str関数,repr関数(逆引用符で囲むのと同値)に渡すことができます.
したがって,結果の処理の最も簡単なものの例は
result = pop.inquire(P1, P2, .. , Pn)
while result <> None:
  print result
  result = pop.inquire_next()
でしょう.

なお,変数は束縛されていないことがあります.
この場合は,Variableインスタンスが返されますが,その名前は,辞書内で一意になるようにPoPが発行した文字列になっています. 質問に含まれる変数名ではありませんので,注意してください.

返された変数値をPythonプログラムで処理するためには,以下のようにします.
まず,プログラム上明らかな場合以外は,インスタンスの型を知る必要があります. このために,すべてのPoPオブジェクトにtypeメソッドが提供されています.

x1 = result['x1']
x1_type = x1.type()
typeメソッドが返す値は文字列で,PoPモジュールの中に次のように定義されています.
TYPE_nil = 'nil'
TYPE_integer = 'integer'
TYPE_float = 'float'
TYPE_string = 'string'
TYPE_atom = 'atom'
TYPE_list = 'list'
TYPE_clause = 'clause'
TYPE_variable = 'variable'
オブジェクトの型がわかったら,それに応じてメソッドを呼び出し,得られた値を使って目的の処理をします. 例えば,変数xに数のリストが返されることがわかっていて,個々の値に対して関数呼出しをしたいのであれば,
y = result['x']
while y.type <> TYPE_nil:
  print f(y.item().value())
  y = y.next()
のようになります.
使用できるメソッドについては,リファレンスを参照してください.

[Next]トレース [Previous]問合わせ [Up]PoPの使用方法 [Top]