MteEVAL est une bibliothèque permettant de compiler et d'évaluer des expressions au moment de l'exécution. Les expressions sont converties en bytecode puis exécutées à la demande avec une simple machine virtuelle.
Il existe quatre éditions de la bibliothèque : Android (B4A), iOS (B4i), Java (B4J), JavaS2 (B4A/B4J).
JavaS2 est notre édition performante étape 2 de la bibliothèque en Java natif.
Consultez Anywhere Software pour en savoir plus sur les outils de développement multiplateformes B4A, B4i et B4J.
La création d'expressions au moment de l'exécution est un outil puissant permettant de modifier les calculs et le déroulement du programme après l'installation, ce qui nécessiterait autrement une mise à jour physique ou une création personnalisée d'une application. Par exemple, toute application conçue pour gérer un plan de rémunération des ventes pourrait bénéficier d'expressions d'exécution, dans lesquelles l'utilisateur final peut souhaiter personnaliser les formules du plan en fonction des membres de l'équipe, des combinaisons de produits et des objectifs de vente.
MteEVAL implémente une seule classe nommée Codeblock. Le bloc de code de MteEVAL adopte la syntaxe du vénérable compilateur xBase Clipper 5 des années 1990, où la construction a commencé. Les blocs de code commencent par une accolade ouverte, suivie d'une liste de paramètres facultatifs entre les tubes, puis l'expression, et se terminent par une accolade fermante.
{| < parameters > | < expression > }
Vous n’avez besoin de compiler un Codeblock qu’une seule fois. Une fois compilé, vous pouvez l'évaluer autant de fois que nécessaire, tout en fournissant différents arguments.
Exemple 1 : Codeblock sans paramètres
Dim cb as Codeblock
cb.Initialize
cb.Compile( "{||5 + 3}" )
Result = cb.Eval 'Result=8
Exemple 2 : Codeblock avec paramètres
Dim cb as Codeblock
cb.Initialize
cb.Compile( "{|length,width|length*width}" )
Area = cb.Eval2( Array( 3 , 17 ) ) 'Area=51
Lors de l'évaluation d'un Codeblock avec des paramètres, utilisez la méthode Eval2.
Exemple 3 : Compilation, évaluation et répétition de Codeblock
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
La bibliothèque prend en charge les opérateurs de style C/Java ainsi qu'une liste croissante de fonctions natives B4X.