4

AS3 で数式を評価するにはどうすればよいですか? のような派手なものはありません(10/3)*4+10

ありがとう。

4

3 に答える 3

9

D.evalAS3Evalのような巨大な 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]);
        }

    }

}
于 2012-07-12T21:18:12.533 に答える
1

ライブラリの使用を避けたい場合は、 を使用しExternalInterface.callて Javascript の eval 関数にアクセスしてみてください。

例えば:

var formula:String = '1+1';
var result:* = ExternalInterface.call('eval', formula);

result == 'undefined'数式構文のエラーを意味するかどうかを確認することをお勧めします。

于 2012-07-12T21:31:17.240 に答える