Embracing Null-Handling in Loops
You can avoid many extra lines of code by understanding how loops behave with null values.
If a variable recentOrders is a List, then the following
loop processes each element in the list or gets skipped if the variable is
null or the list is empty:
// Process recent customer orders (if any, otherwise skip)
for (order in recentOrders) {
// Do something here with current order
}
If a variable
recentTransactions is a Map, then the
following conditional block executes only if recentTransactions is not
null and contains at least one map
entry:// Process supplier's recent transaction (if any, otherwise skip)
for (transaction in recentTransactions) {
// Do something here with each transaction referencing each map
// entry's key & value using transaction.key & transaction.value
}
A String variable can be null, an empty string
(""), or can contain at least one character in it. If a variable
middleName is a String, then the following conditional
block will execute only if middleName is not null and
contains at least one character:
// Process the characters in the customer's middle name
for (c in middleName) {
// Do something here with each character 'c'
}
If your for loop invokes a method directly on a variable that might be
null, then use the safe-navigation operator (?.) to avoid
an error if the variable is null:
// Split the recipientList string on commas, then trim
// each email to remove any possible whitespace
for (email in recipientList?.split(',')) {
def trimmedEmail = email.trim()
// Do something here with the trimmed email
}