While reading some groovy code of another developer I encountered the following definition:
def foo=[:]
What does it mean?
Just to add some more insight, the "?:" operator is known as the binary operator or commonly referred to as the elvis operator. The following code examples all produce the same results where x evaluates to true according to Groovy Truth // These three code snippets mean the same thing.
Groovy offers four bitwise operators: & : bitwise "and" | : bitwise "or" ^ : bitwise "xor" (exclusive "or")
The def keyword is used to define an untyped variable or a function in Groovy, as it is an optionally-typed language.
Asking for help, clarification, or responding to other answers.
[:]
is shorthand notation for creating a Map.
You can also add keys and values to it:
def foo = [bar: 'baz']
[:]
creates an empty Map. The colon is there to distinguish it from []
, which creates an empty List.
This groovy code:
def foo = [:]
is roughly equivalent to this java code:
Object foo = new java.util.LinkedHashMap();
Quoting the doc:
Notice that
[:]
is the empty map expression.
... which is the only Map
with size()
returning 0. ) By itself, it's rarely useful, but you can add values into this Map, of course:
def emptyMap = [:]
assert emptyMap.size() == 0
emptyMap.foo = 5
assert emptyMap.size() == 1
assert emptyMap.foo == 5
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With