MteEVAL은 런타임에 표현식을 컴파일하고 평가하기 위한 라이브러리입니다. 표현식은 바이트코드로 변환된 후 간단한 가상 머신을 통해 요청 시 실행됩니다.
라이브러리에는 Android(B4A), iOS(B4i), Java(B4J), JavaS2(B4A/B4J)의 네 가지 버전이 있습니다.
JavaS2는 기본 Java 라이브러리의 2단계 성능 에디션입니다.
B4A, B4i 및 B4J 크로스 플랫폼 개발 도구에 대해 자세히 알아보려면 Anywhere 소프트웨어를 참조하세요.
런타임에 표현식을 작성하면 설치 후 계산 및 프로그램 흐름을 수정할 수 있는 강력한 도구가 됩니다. 그렇지 않으면 애플리케이션의 물리적 업데이트나 사용자 정의 빌드가 필요합니다. 예를 들어 판매 보상 계획을 관리하도록 설계된 모든 응용 프로그램은 최종 사용자가 팀 구성원, 제품 혼합 및 판매 목표별로 계획의 수식을 사용자 정의할 수 있는 런타임 표현식의 이점을 누릴 수 있습니다.
MteEVAL은 Codeblock이라는 단일 클래스를 구현합니다. MteEVAL의 코드 블록은 구성이 시작된 유서 깊은 1990년대 xBase 컴파일러 Clipper 5의 구문을 채택합니다. Codeblock은 여는 중괄호로 시작하고 파이프 사이의 선택적 매개변수 목록, 표현식, 닫는 중괄호로 끝납니다.
{| < parameters > | < expression > }
Codeblock은 한 번만 컴파일하면 됩니다. 일단 컴파일되면 다른 인수를 제공하면서 필요한 만큼 여러 번 평가할 수 있습니다.
예시 1: 매개변수가 없는 Codeblock
Dim cb as Codeblock
cb.Initialize
cb.Compile( "{||5 + 3}" )
Result = cb.Eval 'Result=8
예시 2: 매개변수가 있는 Codeblock
Dim cb as Codeblock
cb.Initialize
cb.Compile( "{|length,width|length*width}" )
Area = cb.Eval2( Array( 3 , 17 ) ) 'Area=51
매개변수가 있는 Codeblock을 평가할 때는 Eval2 메서드를 사용하세요.
예시 3: 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
라이브러리는 점점 늘어나는 B4X 기본 기능 목록과 함께 C/Java 스타일 연산자를 지원합니다.