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 本机函数。