字符串使用字符运算符但不使用eval的算术

时间:2014-01-29 07:22:32

标签: matlab eval

我正在尝试编写一个最短的函数代码,而不是添加/乘法/除/减它们。唯一的事情是该操作将以char数据类型提供:

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

我已成功实现了operator ='+'的相同位置:

>> 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(代码行数)?

1 个答案:

答案 0 :(得分:3)

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