【问题标题】:Returning a value from an if-statement in Prolog从 Prolog 中的 if 语句返回一个值
【发布时间】:2021-02-26 14:18:06
【问题描述】:

我正在尝试编写这样的简单代码:

在伪代码中:

function(x,y):
if y = 0:
        return x
if x = 0:
        return y

我猜我应该使用类似的东西

function(X,Y,Return) :-

作为起点,“如果 y = 0:”将是

y =:= 0.

但是我如何返回 X?我需要将它分配给 Return 变量,但是如何?

编辑:我想我找到了:

test(X,Y,Z) :- 
    ( Y =:= 0 ->  Z = X );
    ( X =:= 0 ->  Z = Y ).

【问题讨论】:

    标签: if-statement prolog return operator-keyword relational


    【解决方案1】:

    很简单:

    function(X, 0, X).
    function(0, Y, Y).
    

    响应编辑。上面的解决方案更好,因为它比

    function(X,Y,Z) :- 
        ( Y =:= 0 ->  Z = X );
        ( X =:= 0 ->  Z = Y ).
    

    并且可以向后使用:

    function(0, X, 3).
    

    在一个版本中找到X,但在另一个版本中找不到。

    【讨论】:

    • @HaiseSasaki 这不能正常工作:function(1, 0, Return). -> false
    • 我对这意味着什么感到困惑。究竟什么是假的?
    • @HaiseSasaki SWI-Prolog 的回复。其他序言可能会说“不”。
    猜你喜欢
    • 2014-03-07
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多