Language Basics

Variables, Conditionals, Comments, For loops, While loops, Structs

This is a collection of basic syntax elements with examples. It includes an introduction to Variables, Conditional Statements, Loops, and Structs.

Variables

Local variables Can be defined using the let, const and var keywords; their identifying rules are the same as contextual variables.

  • let declares a local variable (or a parameter) with a lexical block scope. The variable can only be accessed within its definition block and any nested sub-block. This also forbids variable redeclaration within that scope.

  • const behaves as let but will prevent the variable from being reassigned by any side effect operator.

  • var declares a variable whose scope is the whole script and allows redefinition. This behavior is altered by the JexlFeature#setLexical(true) that will enforce a lexical scope for all variables akin to let declaration.

  • Basic declaration: let x;

  • Declaration with assignment: const theAnswer = 42;

  • Invalid declaration: var x.y;

Local variables they take precedence in resolution over contextual variables. When scripts are created with named parameters, those behave as local variables. Local variables can not use ant-style naming, only one identifier.

To learn more about the different variable types visit Primitive Types.


Conditional Expressions

Conditional statements allow you to make decisions in your code based on specific conditions. The most fundamental form of a conditional statement is the if-else statement, which enables you to execute different blocks of code depending on whether a condition is true or false.

Syntax

var number1 = 5;
var number2 = 7;

if (number1 == number2) {
    // This block of code will execute if number1 is equal to number2
    return("number1 is equal to number2");
} else {
    // This block of code will execute if number1 is not equal to number2
    return("number1 is not equal to number2");
}

Usage

  • The if keyword is followed by a condition enclosed in parentheses.

  • If the condition is true, the code block inside the first set of curly braces is executed.

  • If the condition is false, the code block inside the else set of curly braces is executed.

Examples

Example 1: Checking for Empty Values

In this example, we use the empty function to check if a value is empty. If the value is empty, we display a message; otherwise, we display a different message.

Example 2: Comparing String Sizes

Here, we use the size function to determine the length of a string and compare it to a specific size. Depending on the size of the string, different actions are taken.

These examples illustrate how if-else statements can be used to make decisions in your code based on conditions. You can adapt this concept to handle various scenarios and create more complex logic as needed.


Comments

Just like most modern languages, B2Win Suite Scripting supports single-line and multi-line comments.


Loops

for, while, do/while, continue, break

for loops

Loop through items of an Array, Collection, Map, Iterator or Enumeration, e.g.

The following syntax using a context variable is also supported:

Finally, the conventional syntax using a local variable, initial value, loop condition and loop step is supported.

Example

Note: foreach(item in list) is unsupported.

while loops

Loop until a condition is satisfied, e.g.

do/while loops

Continue: Within loops (do/while/for), allows to skip to the next iteration.

Break: Allows to break from a loop (do/while/for) unconditionally.

Example: Inventory Replenishment with a While Loop


Error Handling

To manage exceptions during runtime, use the try, catch, and finally blocks. This structure allows you to catch and respond to errors gracefully, and ensure that cleanup or logging logic in the finally block always executes, regardless of whether an error occurred.

Example:

Explanation:

  • try block: Place the code that might throw an exception here.

  • catch block: Handles any exceptions thrown in the try block. Use e.getValue() to retrieve the actual error message or value.

  • finally block: Runs regardless of whether an exception was thrown or not — useful for logging or cleanup.


Structs

Structs are fundamental data structures, providing a convenient way to define custom data types. A struct groups related data fields under a single name, allowing you to create complex data structures tailored to your specific needs. This section will introduce you to defining and using structs.

Defining a Struct

A struct is defined using a syntax similar to the following:

  • structExample: The name of the struct.

  • "field1", "field2", and so on: The field names within the struct. They must be in quotation marks.

  • value1, value2, and so on: The initial values for each field. You can assign fields empty values as well.

You can define as many fields as needed within a struct, and each field can have a different data type.

Example

Let's create a simple struct to represent a Point in a 2D space:

In this example, we've defined a Point struct with two fields, x and y, both initialized to zero.

Accessing Struct Fields

You can access the fields of a struct using dot notation:

Another way you can access fields of a struct is using the square brackets:

Modifying Struct Fields

You can also modify the values of struct fields:


Examples

We'll create a struct to represent employee information:

Last updated

Was this helpful?