Prolog中的条件陈述

时间:2014-09-23 19:20:03

标签: prolog

我刚刚开始prolog,并想知道我们是否可以在Prolog中实现像(if.else)这样的条件语句,如果是这样的话? 有人可以在Prolog中实现此代码只是为了一个例子 -

if(a==2)
 print("A is 2");
if(a==3)
 print("A is 3");
else
 print("HAhahahahaah");

好的,所以我在谢尔盖·迪姆琴科回答后这样做。

Test(A) :-read(A),
 ( A =:= 2 ->
    write('A is 2')
 ;
    ( A =:= 3 ->
        write('A is 3')
    ;
        write('HAhahahahaah')
    )
 ).

这是正确的答案,除了这显示A = 2,我也不想要(如果我给输入2)。

1 个答案:

答案 0 :(得分:3)

一种方法:

test(A) :-
    (   A =:= 2 ->
        write('A is 2')
    ;   A =:= 3 ->
        write('A is 3')
    ;   write('HAhahahahaah')
    ).

另一种方法:

test(2) :-
    write('A is 2').
test(3) :-
    write('A is 3').
test(A) :-
    A \= 2, A \= 3,
    write('HAhahahahaah').

这两个代码存在差异,例如选择点,A未实例化时的行为,以及A是否被视为数字。但两者都会以相同的方式工作(除了选择点)和预期的查询test(2).test(3).test(42).