在Prolog中提取结构内容

时间:2018-03-15 12:52:31

标签: prolog

假设我有一个这样的结构:

flight( bos, nyc, time( 7,30 ) )

以变量的形式:My_Flight

如果将此变量传递给这样的函数:

my_func(Flight) :-
   write(Flight[0])

我如何能够提取结构的内容并对每个部分执行某些操作,如上述函数的第二行?

很抱歉,如果我的术语不对,我对这门语言很陌生!

1 个答案:

答案 0 :(得分:4)

首先,我建议您认为以声明方式

答案:要{}持有my_func/1,首先,my_func/1的格式必须为

Flight

使用flight(From, To, Time)或甚至更好的直接模式匹配,我们已经可以在参数上将其表示为约束

my_func(flight(From,To,Time)) :-
    ...

然后说明持有关于(=)/2要保留的参数的其他内容。

不要想“如何提取......”,因为参数甚至可能无法实例化。相反,问:“持有什么关于这个论点?”这为更多使用模式铺平了道路:提取构造检查等。