Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解构SWI-Prolog中的复合词_Prolog_Term_Destructuring - Fatal编程技术网

如何解构SWI-Prolog中的复合词

如何解构SWI-Prolog中的复合词,prolog,term,destructuring,Prolog,Term,Destructuring,我有复合术语,可以在大括号内有一个数字 例如:qpowieipq(5)、lsjdlasa(15)或lkjlk。我从数据库(比如my_list)中得到了它([rxclk,rxer,rxdv,rxd(0),rxd(1),rxd(2),crs,col,txen,txd(0),txd(1),txd(2),‌​txd(3)]。) 如何获取大括号内的数字值 例如: my_function(qpowieipq(5), X). X=5. my_function(lsjdlasa(15), X). X=15. m

我有复合术语,可以在大括号内有一个数字

例如:
qpowieipq(5)、lsjdlasa(15)
lkjlk
。我从数据库(比如
my_list)中得到了它([rxclk,rxer,rxdv,rxd(0),rxd(1),rxd(2),crs,col,txen,txd(0),txd(1),txd(2),‌​txd(3)]。

如何获取大括号内的数字值

例如:

my_function(qpowieipq(5), X).
X=5.
my_function(lsjdlasa(15), X).
X=15.
my_function(lkjlk, X).
false
我正在使用SWI Prolog。

您可以使用和模式匹配来解构Prolog的复合术语。比如说

?- a =.. X.
X = [a].

?- a(1) =.. X.
X = [a, 1].
所以,暂时

my_function(T, V) :- T =.. [_,V], number(V).

这将适用于任何符合ISO标准的Prolog处理器。

您的描述缺少回答以下问题所需的关键详细信息。。。什么是“数据库”:SQL?什么是“字符串”:原子?你用的是哪一个序言。数据库:例如:我的列表([rxclk、rxer、rxdv、rxd(0)、rxd(1)、rxd(2)、crs、col、txen、txd(0)、txd(1)、txd(2)、txd(3)])。2.SWI序言