2014-01-29 22 views
0

我正在嘗試編寫一個最短的函數代碼,它可以添加/乘法/除法/減去它們。唯一的一點是,該操作將在字符數據類型提供:字符串使用字符運算符但不使用eval的Aritmatic

+ = '+' 
- = '-' 
/= '/' 
* = '*' 

我已經成功地實現了相同的地方運營商=「+」:

>> eval(sprintf('%d %c %d',8, operator, 7)) 

ans = 

    15 

但有沒有使用方法'eval'函數我們可以實現一樣嗎?

==== UPDATE =======

下面是我可以減少:

function value = MathsOperations(numbers,operator) 
    value(operator == '+') = numbers(1) + numbers(2); 
    value(operator == '-') = numbers(1) - numbers(2); 
    value(operator == '*') = numbers(1) * numbers(2); 
    value(operator == '/') = numbers(1)/numbers(2); 
end 

如何我仍然可以降低LOC(行代碼)?

+0

您可以簡單地定義*函數*。 – herohuyongtao

+0

同意但是可以在2-3行內完成同一功能? – Prakash

回答

3
map=containers.Map({'+','-','*','/'},{@plus,@minus,@mtimes,@mdivide}); 
f=map('+'); 
value=f(numbers(1),numbers(2)) 
+0

不錯的使用containers.Map! – Jonas

+1

只需稍微改動一下\ mddivide而不是\ @mdivide – Prakash

相關問題