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 aslet
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 theJexlFeature#setLexical(true)
that will enforce a lexical scope for all variables akin tolet
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 theelse
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.
var value = "B2Data";
if (empty(value)) {
return "The value is empty.";
} else {
return "The value is not empty.";
}
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.
var text = "Hello, World!";
var requiredSize = 10;
if (size(text) > requiredSize) {
return "The string is longer than the required size.";
} else {
return "The string is not longer than the required size.";
}
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.
// This is a single-line comments
/* This is a comment
on multiple lines. */
Loops
for, while, do/while, continue, break
for loops
Loop through items of an Array, Collection, Map, Iterator or Enumeration, e.g.
for (let item : list) {
x = x + item;
}
// Where list is a context variable pointing to any iterable structure.
The following syntax using a context variable is also supported:
for (item : list) {
x = x + item;
}
// Note that the loop variable item is accessible after loop evaluation
Finally, the conventional syntax using a local variable, initial value, loop condition and loop step is supported.
for (let i = 0; i < size(list); ++i) {
x = x + list[i];
}
// Where list is a local variable pointing to an array-like structure.
Example
var list = [1,2,3,4];
var x = 0;
for(item : list) {
x = x + item;
}
return x; // returns 10
Note: foreach(item in list)
is unsupported.
while loops
Loop until a condition is satisfied, e.g.
while (x < 10) {
x = x + 2;
}
do/while loops
do {
x = x + 2;
} while (x < 10)
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
var inventoryLevel = 100;
var reorderThreshold = 30;
// while invetory level is velow reorderThreshold, restock.
while (inventoryLevel < reorderThreshold) {
// Place an order to restock inventory.
orderProduct();
// Update the inventory level after placing the order.
inventoryLevel += 100; // Assuming 100 units are ordered at a time.
}
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:
var structExample = {
"field1": value1,
"field2": value2,
// more fields
}
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:
var Point = {
"x": 0,
"y": 0
}
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:
var myPoint = Point; // Create an instance of the Point struct
return myPoint.x; // Access the 'x' field
return myPoint.y; // Access the 'y' field
Another way you can access fields of a struct is using the square brackets:
return myPoint["y"]; // Access the 'y' field
return myPoint["y"]; // Access the 'y' field
Modifying Struct Fields
You can also modify the values of struct fields:
myPoint.x = 10; // Set the 'x' field to 10
myPoint.y = 5; // Set the 'y' field to 5
Examples
We'll create a struct to represent employee information:
var Employee = {
"name": "",
"employeeID": "",
"position": "",
"salary": 0.0
}
// Create instances of the Employee struct for two employees
var employee1 = Employee;
employee1.name = "Alice Smith";
employee1.employeeID = "E12345";
employee1.position = "Software Engineer";
employee1.salary = 75000.00;
var employee2 = Employee;
employee2.name = "Bob Johnson";
employee2.employeeID = "E67890";
employee2.position = "Sales Manager";
employee2.salary = 90000.00;
// Calculate the total salary for the two employees
var totalSalary = employee1.salary + employee2.salary;
// Display employee information and total salary
var employeeInfo1 = "Employee 1:\nName: " + employee1.name + "\nEmployee ID: " +
employee1.employeeID + "\nPosition: " + employee1.position
+ "\nSalary: $" + employee1.salary;
var employeeInfo2 = "Employee 2:\nName: " + employee2.name + "\nEmployee ID: " +
employee2.employeeID + "\nPosition: " + employee2.position
+ "\nSalary: $" + employee2.salary;
var combinedInfo = employeeInfo1 + "\n\n" + employeeInfo2
+ "\n\nTotal Salary for Both Employees: $" + totalSalary;
return combinedInfo;
Was this helpful?