我正在尝试编写一个最短的函数代码,而不是添加/乘法/除/减它们。唯一的事情是该操作将以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(代码行数)?
答案 0 :(得分:3)
map=containers.Map({'+','-','*','/'},{@plus,@minus,@mtimes,@mdivide});
f=map('+');
value=f(numbers(1),numbers(2))