MteEVAL は、実行時に式をコンパイルおよび評価するためのライブラリです。式はバイトコードに変換され、シンプルな仮想マシンを使用してオンデマンドで実行されます。
ライブラリには、Android (B4A)、iOS (B4i)、Java (B4J)、JavaS2 (B4A/B4J) の 4 つのエディションがあります。
JavaS2 は、ネイティブ Java のライブラリのステージ 2 パフォーマンス エディションです。
B4A、B4i、および B4J クロスプラットフォーム開発ツールの詳細については、「Anywhere Software」を参照してください。
実行時に式を作成することは、インストール後に計算やプログラム フローを変更できる強力なツールです。これを行わないと、アプリケーションの物理的なアップデートやカスタム ビルドが必要になります。たとえば、販売報酬計画を管理するように設計されたアプリケーションは、エンドユーザーがチーム メンバー、製品構成、販売目標ごとに計画の式をカスタマイズしたい場合に、実行時式の恩恵を受ける可能性があります。
MteEVAL は、Codeblock という名前の単一クラスを実装します。 MteEVAL のコードブロックは、その構築が始まった 1990 年代の由緒ある xBase コンパイラー Clipper 5 の構文を採用しています。コードブロックは左中括弧で始まり、その後にパイプ間のオプションのパラメーター リスト、式が続き、右中括弧で終わります。
{| < parameters > | < expression > }
コードブロックをコンパイルする必要があるのは 1 回だけです。コンパイルしたら、さまざまな引数を指定しながら、必要に応じて何度でも評価できます。
例 1: パラメーターのないコードブロック
Dim cb as Codeblock
cb.Initialize
cb.Compile( "{||5 + 3}" )
Result = cb.Eval 'Result=8
例 2: パラメーターを含むコードブロック
Dim cb as Codeblock
cb.Initialize
cb.Compile( "{|length,width|length*width}" )
Area = cb.Eval2( Array( 3 , 17 ) ) 'Area=51
パラメーターを使用してコードブロックを評価する場合は、Eval2 メソッドを使用します。
例 3: コードブロックのコンパイル、評価、繰り返し
Dim cb as Codeblock
cb.Initialize
cb.Compile( "{|sales,r1,r2| r1*sales + iif( sales > 100000, (sales-100000)*r2, 0 ) }" )
Commission1 = cb.Eval2( Array( 152000 , . 08 , . 05 ) ) 'Commission1=14760
Commission2 = cb.Eval2( Array( 186100 , . 08 , . 07 ) ) 'Commission2=20915
Commission3 = cb.Eval2( Array( 320000 , . 08 , . 05 ) ) 'Commission3=36600
このライブラリは、増え続ける B4X ネイティブ関数のリストとともに C/Java スタイルの演算子をサポートします。