我需要在运行时评估字符串中的表达式。不确定如何在Flex中实现这一点。我的要求如下
var test:String = "myparams.id=10" ;
//test will be a string populated at runtime.
// I need to treat it as an expression and evaluate it at runtime
if(test)
{
// do something
}
else
{
//do something
}
是否可以执行类似此动作脚本3的操作?
我相信之前的eval函数允许这样做,但现在已经折旧了吗?
此致 阿帕娜
答案 0 :(得分:1)
您可以尝试这样的事情:
var nameValuePairs : Array = test.split('=');
var variableName : String = nameValuePairs[0];
var variableValue : String = nameValuePairs[1];
但是如果可以的话,最好避免这种解析并使用XML或JSON或其他东西。
答案 1 :(得分:1)
如果你计划这么做,或者你打算尝试解析更复杂的数学表达式,那么考虑使用MathParser类:
http://www.flashandmath.com/intermediate/mathparser/mp1.html
答案 2 :(得分:0)
daniel是绝对正确的,你应该避免使用它,但是如果你必须这样做,它会像这样工作:
private var myId : Number = 10;
public function StringTest()
{
var myTestString : String = "myId=10";
var array : Array = myTestString.split("=");
if(this[array[0]] == array[1])
{
trace("variable " + array[0] + " equals " + array[1]);
}
}
如果只将array [0]与array [1]进行比较,它将比较字符串,但使用此[array [0]]将在函数范围内查找具有此标识符的变量。请注意,如果找不到变量,它将抛出ReferenceError。所以你可能想把它放到try {..} catch(error:ReferenceError){...}语句中。
答案 3 :(得分:-1)
var myparams.id=0;
// ...
// ...
// ...
var test:String = "myparams.id=10";<br>
setTimeout(test, 0);