我得到了以下事件:项目(C,X,G,P) ,(其中,C是针对该产品的数量,X它的名字,G它的价格,P它的成本).
当我item(n3001,_,_,P)直接在prolog控制台上使用命令时我会得到答案,
G = 1.25 X = 100但是当我写出等式时,p3(C)-: item(C,_,_,P).我会查阅我得到的文本作为答案yes.
我澄清的问题是,有一次我得到了P我想要的价值,而另一次我得到的是真是假?
Prolog中没有返回值,p3/1不构成函数,而是构成关系.你的定义
p3(C) :-
item(C,_,_,P).
Run Code Online (Sandbox Code Playgroud)
读:如果item(C,_,_,P)成功,那么也p3(C)成功.为了论证,我们假设您的代码包含以下事实:
item(n3001,100,1.25,1).
Run Code Online (Sandbox Code Playgroud)
如果你查询
?- p3(n3001).
Run Code Online (Sandbox Code Playgroud)
Prolog统一C了你的规则,n3001然后尝试你的目标item(C,_,_,P)成功.因此规则成功,Prolog告诉你:
?- p3(n3001).
yes
Run Code Online (Sandbox Code Playgroud)
如果您想知道对应的价格,n3001您还必须定义规则P头部中出现的规则,例如:
p3(C,P) :-
item(C,_,_,P).
Run Code Online (Sandbox Code Playgroud)
如果您查询,您将看到P对应的值n3001:
?- p3(n3001,P).
P = 1
Run Code Online (Sandbox Code Playgroud)
如果您查询item/4直接P出现在参数中,那么您将看到满足您的查询的替换它:
?- item(n3001,_,_,P).
P = 1
Run Code Online (Sandbox Code Playgroud)