我试图在GNU Prolog中使用->
运算符,但是我在变量作用域中遇到了一些麻烦。这里有一个例子:在Prolog中if/else的变量范围
example(A) :-
B = A,
(B == 2 -> write(B), write(' is 2'), nl);
(write(B), write(' is not 2'), nl).
在序言控制台:
| ?- example(2).
2 is 2
true ?
yes
| ?- example(3).
_282 is not 2
yes
当我查询example(2)
,B == 2
成功和前导知道B的值,从而打印出2 is 2
。另一方面,当我查询example(3)
,B == 2
失败,并由于某种原因,Prolog不知道B的值,因此打印出一些变量_282
。我很困惑,为什么Prolog只有在B == 2
成功时才知道B的价值。我没有正确使用->
运营商吗?任何帮助,将不胜感激。
谢谢!为了回答你最后的问题,我的实际代码在if/else语句之前做了很多工作。为了这个问题,我只是简化了一切。 – applemavs