我需要能够像这样操作变量。
首先找到变量并检查它是什么(在这种情况下是运算符 * / + 等),然后将其反转。例如,~(5+9) 的值为 -14,~(3-5) 的值为 2。
我该怎么做呢?
反转运算符是什么意思?听起来你想做相反的事情——所以加法变成减法,反之亦然,乘法变成除法,反之亦然。但是您的示例表明您要执行该操作,然后否定答案。例如,如果您只是“反转运算符”,那么 5+9 将变为 5-9=-4。同样,要获得 5+9=-14,您必须否定 5+9 运算的答案。在我们继续之前你能澄清一下吗?
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
likecustom_action(5, "+", 9)
得到 -14 和custom_action(3, "-", 5)
得到 2。
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