Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 如何计算字符串中的表达式?_Apache Flex_Actionscript 3 - Fatal编程技术网

Apache flex 如何计算字符串中的表达式?

Apache flex 如何计算字符串中的表达式?,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我需要在运行时计算字符串中的表达式。不确定如何在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

我需要在运行时计算字符串中的表达式。不确定如何在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函数之前允许这样做,但现在它被贬值了

问候
Aparna

您可以尝试以下方法:

var nameValuePairs : Array = test.split('=');
var variableName : String = nameValuePairs[0];
var variableValue : String = nameValuePairs[1];
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]);
    }
}

但是最好避免这种解析,如果可以的话,最好使用XML或JSON或其他任何东西。

daniel是绝对正确的,你应该避免使用这种解析,但如果必须的话,它会像这样工作:

var nameValuePairs : Array = test.split('=');
var variableName : String = nameValuePairs[0];
var variableValue : String = nameValuePairs[1];
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]);
    }
}

如果仅将数组[0]与数组[1]进行比较,它将比较字符串,但使用此[array[0]]将在函数范围内查找具有此标识符的变量。注意,如果找不到变量,它将抛出ReferenceError。所以,你可能想把它放入一个尝试{ } catch(错误:参考错误){}}。

如果你计划这么做,或者如果你打算解析更复杂的数学表达式,那么考虑使用MaTaPrScript类:

var myparams.id=0;
// ...
// ...
// ...
var测试:String=“myparams.id=10”
设置超时(测试,0);
-1-问题是针对ActionScript,而不是JavaScript。尽管ActionScript有自己的,但与JS版本不同,它需要Function类型的参数,而不是字符串。因此,您仍然需要将字符串解析为表达式,这就回避了这个问题。