我得到了以下事件:项目(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)