如何使用 AS3 评估数学公式?没有什么花哨的东西,比如(10/3)*4+10
。
谢谢。
虽然您可以使用像D.eval或AS3Eval这样的大型 eval 库,但您真正需要的只是这个简单 的MathParser(有关 MathParser的更多信息)
以下是您使用 MathParser 的方法:
package {
import bkde.as3.parsers.*;
import flash.display.Sprite;
public class MathTest extends Sprite {
public function MathTest() {
var parser:MathParser = new MathParser([]);
var compiledObj:CompiledObject = parser.doCompile("(10/3)*4+10");
var answer:Number = parser.doEval(compiledObj.PolishArray, []);
// EDIT: In case you wanted variables
var xyParser:MathParser = new MathParser(["x", "y"]);
var xyCompiledObj:CompiledObject = xyParser.doCompile("(x/3)*y+10");
var xyAnswer:Number = xyParser.doEval(xyCompiledObj.PolishArray, [10, 4]);
}
}
}
我相信D.eval API是您正在寻找的。
如果您想避免使用库,可以尝试使用ExternalInterface.call
来访问 Javascript 的 eval 函数。
例如:
var formula:String = '1+1';
var result:* = ExternalInterface.call('eval', formula);
您可能需要检查result == 'undefined'
这是否表示公式语法中的错误。