【发布时间】:2014-07-25 07:23:08
【问题描述】:
我需要编写一个自定义函数,该函数将被其他固定函数多次调用。在这个函数中,在第一次调用时,它会返回一个文件的总行数。此函数的第二次调用时间 forward 将返回此文件小部分中的行数。我的问题是如何保留第一个返回的结果(文件的总行数)并将其用于函数的下一个调用时间。我只需要在这个函数中(而不是在调用者中)编写或声明任何东西。像这样的:
myFunction(Input, MyResult, FirstResult) :-
calculateInputFunction(Input, Result),
!,
MyResult is Result,
... .
问题是,每次调用 myFunction 时,它接收到不同的 Input 并返回不同的 MyResult。但我想保留第一个 MyResult 用于 myFunction 的下一个调用时间。我怎样才能做到这一点?非常感谢您提前回答。
myFunction([V1,V2], Result) :-
reset,
cached_all(a(V1,V2)),
use V1, V2 to calculate Result,
...
reset,
finishedCode.
以上是我的函数,还有其他函数会调用myFunction,将V1、V2的值传递给这个函数并取回Result。
【问题讨论】:
-
其实我只是想把第一个结果存到这个参数里,下次用。
-
实际上,如果我可以声明一个全局变量并将第一个结果存储到这个变量中,并下次使用它,这可能是一个解决方案,但是,我认为使用全局变量不是好主意。
标签: caching prolog logic memoization