从函数中检索值

时间:2012-08-11 16:00:28

标签: list

我有一个程序,其中我有两个数组。它们开始是空的,但通过程序,它们会被填充。

如果这是我的第一个功能:

program():-
  populate_arrays([],[]),
  carry_on().

为了将填充的数组传递给carry_on(),我必须在populate_arrays()中有四个参数吗?两个在启动时将数组声明为空,另外两个传递给carry_on()?

所以喜欢:

program():-
  populate_arrays([],[],A,B),
  carry_on(A,B).

看起来很尴尬我必须加倍参数

1 个答案:

答案 0 :(得分:1)

是的,这就是你要做的。不,它并不尴尬,因为它们不是重复的:第一对是你的输入参数,第二对是你的输出结果。

这是一种常见的使用模式,对应于 状态转换 :旧 in ,new out 。您的知识状态由此谓词populate_arrays更改。这反映在您如何使用它。

顺便说一句,如果起始值始终为[],则可以为“工作”谓词提供“包装器”:

populate_arrays( A, B):-
   populate_arrays([], [], A, B).

populate_arrays( A, B, C, D):-
   % your implementation ...