2016-02-29 31 views
0

我需要能夠像這樣操縱變量。Erlang:找到一個變量並將其倒轉

首先找到變量並檢查它是什麼(在這種情況下是一個運算符*/+等),然後將其反轉。例如,〜(5 + 9)的值是-14和 〜的值(3-5)爲2

我如何去這樣做呢?

+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 
+0

OP不希望F({5,'+',9})返回14. –

+0

剛剛用Erlang 19 - 'F({5,'+',9})進行測試,'仍然返回14 – Amiramix

0

你是什麼意思通過顛倒運營商?這聽起來像你會想做相反的 - 所以加法變成減法,反之亦然,並且乘法變成除法,反之亦然。但是你的例子表明你想要執行操作,然後否定答案。例如,如果你只是「倒轉操作員」,那麼5 + 9會變成5-9 = -4。再一次,爲了得到5 + 9 = -14,你必須否定操作5 + 9的答案。在我們繼續之前,你能澄清一下嗎?

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/3custom_action(5, "+", 9)得到-14 custom_action(3, "-", 5)得到2

相關問題