假设我有一个这样的结构:
flight( bos, nyc, time( 7,30 ) )
以变量的形式:My_Flight
。
如果将此变量传递给这样的函数:
my_func(Flight) :-
write(Flight[0])
我如何能够提取结构的内容并对每个部分执行某些操作,如上述函数的第二行?
很抱歉,如果我的术语不对,我对这门语言很陌生!
答案 0 :(得分:4)
首先,我建议您认为以声明方式:
答案:要{}持有my_func/1
,首先,my_func/1
的格式必须为
Flight
使用flight(From, To, Time)
或甚至更好的直接模式匹配,我们已经可以在参数上将其表示为约束:
my_func(flight(From,To,Time)) :- ...
然后说明持有关于(=)/2
要保留的参数的其他内容。
不要想“如何提取......”,因为参数甚至可能无法实例化。相反,问:“持有什么关于这个论点?”这为更多使用模式铺平了道路:提取,构造,检查等。