Erlang:查找变量并将其反转

时间:2016-02-29 18:30:31

标签: erlang erl

我需要能够像这样操纵变量。

首先找到变量并检查它是什么(在这种情况下是运算符* / +等),然后反转它。例如,〜(5 + 9)的值是-14和 〜(3-5)的值是2。

我该怎么做?

3 个答案:

答案 0 :(得分:0)

1> F=fun({A,'+',B}) -> B+A; ({A,'-',B}) -> B-A; ({A,'/',B}) -> B/A end.
#Fun<erl_eval.6.54118792>
2> F({5,'+',9}).
14
3> F({3,'-',5}).
2

答案 1 :(得分:0)

扭转操作员是什么意思?听起来你会想做相反的事情 - 所以加法变成减法,反之亦然,乘法变成除法,反之亦然。但是您的示例表明您要执行操作然后否定答案。例如,如果您只是“反转”运算符,&#34;然后5 + 9将变为5-9 = -4。再次,对于你得到5 + 9 = -14你将不得不否定操作5 + 9的答案。你能在我们继续之前澄清吗?

答案 2 :(得分:0)

custom_action(A, Operator, B) ->
    operate({A, Operator, B}) * -1.

operate({A, "+", B}) -> A + B;
operate({A, "-", B}) -> A - B;
operate({A, "*", B}) -> A * B;
operate({A, "/", B}) -> A / B.

现在,您可以custom_action/3使用custom_action(5, "+", 9)获取-14,使用custom_action(3, "-", 5)获得2。