MteEVAL b4x library
v1.06.3?
MteEVAL 是一個用於在執行時間編譯和評估表達式的函式庫。表達式轉換為字節碼,然後透過簡單的虛擬機器按需執行。
該庫有四個版本:Android (B4A)、iOS (B4i)、Java (B4J)、JavaS2 (B4A/B4J)。
JavaS2 是我們的本機 Java 函式庫的第 2 階段效能版本。
請參閱 Anywhere Software 以了解更多有關 B4A、B4i 和 B4J 跨平台開發工具的資訊。
在運行時建立表達式是一個功能強大的工具,允許在安裝後修改計算和程式流程,否則需要實體更新或自訂建置應用程式。例如,任何設計用於管理銷售補償計劃的應用程式都可以從運行時表達式中受益,其中最終用戶可能希望根據團隊成員、產品組合和銷售目標自訂計劃的公式。
MteEVAL 實作一個名為 Codeblock 的類別。 MteEVAL 的程式碼區塊採用了 1990 年著名的 xBase 編譯器 Clipper 5 的語法,構造就是從這裡開始的。程式碼區塊以左大括號開頭,後面跟著管道之間的可選參數列表,然後是表達式,最後以右大括號結束。
{| < parameters > | < expression > }
您只需要編譯一個程式碼區塊一次。編譯後,您可以根據需要多次評估它,同時提供不同的參數。
範例 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
使用參數評估 Codeblock 時,請使用 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
該程式庫支援 C/Java 風格的運算子以及越來越多的 B4X 本機函數。