/
Groovy Introduction
Groovy Introduction
Groovy is less strict compared to other programming languages. See the following examples.
// true is true, false is false :-) assert true assert !false // non-empty collections are true, empty collections are false assert [1, 2, 3] assert ![] // same with maps assert ['one' : 1] assert ![:] // non-empty strings are true, empty strings are false assert 'a' assert !'' // non-zero numbers are true, zeros are false assert 1 assert 3.5 assert !0 // non-null object references are true, null references are false assert new Object() assert !null
With this knowledge, you can simplify your code noticeably. Instead of writing this:
def competition = api.productExtension('Competition') // returns a collection if (competition != null && !competition .isEmpty()) { // do something with the competition records }
You can write just:
def competition = api.productExtension('Competition') // returns a collection if (competition) { // equals to true if the competition is both non-null and non-empty // do something with the competition records }
Checking for non-null and non-empty arrays is a powerful feature which will save you a lot of typing. But note that if you actually want an empty collection to be a valid result, you need to explicitly check for null.
Also, pay attention to checking for non-null numbers like this:
def n = product.attribute1 // we're expecting a number or null if (n) { // we need to explicitly check for non-null reference here, otherwise we would filter out zeros return 'Yay, I'm a non-null number' } else { return 'But zeros are numbers too!' }
This would filter out zeros as well as zero is evaluated to false.
Related content
Closures
More like this
Recommended Operators
Recommended Operators
More like this
Price Record - Handbook
Price Record - Handbook
Read with this
Common Groovy Methods
Common Groovy Methods
More like this
Quotes (Conceptual Guide)
Quotes (Conceptual Guide)
Read with this
Filters for Data Reading
Filters for Data Reading
More like this
Found an issue in documentation? Write to us.