如果满足条件,则统一变量

时间:2016-02-01 08:21:34

标签: prolog

我想为变量R分配一个值,但该值取决于条件。

if (cond1)
  var = value1 + 5;
else if (cond2)
  var = value1 + 10;
else
  var = value2 + value3 + value4;

这是我尝试的方法,但是如果第一个条件失败,则会为var分配一个值,使得之后的边界失败。

[...], (cond1 -> Var is value1 + 5; 
        cond2 -> Var is value1 + 10;
        Var is value2 + value3 + value4
       ), [...] 

2 个答案:

答案 0 :(得分:1)

Prolog中没有任何作业,只是统一。以下可能有效:

您将R与规则foo

的第二个参数统一起来
foo(Value, R)

规则foo可以按如下方式构建:

foo(Value, X) :- cond1, !, X is Value + 5.
foo(Value, X) :- cond2, !, X is Value + 10.
foo(Value, X) :- X is whatever.

答案 1 :(得分:1)

这是我的错误:R已经在条件之前统一了(在[...]部分中),结果是这样的:

100 is 40 + 39 + 20 <--- FAIL

更改变量的名称解决了它。