运算符可以存储在变量中吗?

时间:2012-06-21 15:12:56

标签: matlab variables while-loop operators eval

这是我想到的一个思想例子:

test = 'x > 0';

while str2func(test)
   Do your thing
   x=x-1;
end

是否可以将整个逻辑运算存储在这样的变量中?

当然str2func会在这里打破。如果 可能,此功能可能是其他功能。我只在test变量内容中添加了撇号,因为我无法想到存储方法还有什么。

在向函数发送参数时,我可以看到它很有用。但大多数情况下我只是想知道,因为我以前从未在任何编程语言中看到它。

1 个答案:

答案 0 :(得分:8)

可以将函数的文本表示存储在变量中并对其进行评估,例如

test = 'x > 0';
eval(test)

应该导致1或0,具体取决于x的值。

但你不应该使用eval的原因太多,因为我经常在这里讨论,因为我不愿重复。您应该熟悉函数和函数句柄。例如

test =  @(x)x>0

使test成为函数的句柄,该函数测试其参数是否大于0。

许多在运行时解释的语言(与编译语言相反)具有类似的功能。