Что означает [:] в хороводе?

Читая некоторый отличный код другого разработчика, я обнаружил следующее определение:

def foo=[:]

Что это значит?

Ответ 1

[:] это сокращенная запись для создания карты.

Вы также можете добавить ключи и значения к нему:

def foo = [bar: 'baz']

Ответ 2

[:] создает пустую карту. Двоеточие, чтобы отличить его от [], создает пустой список.

Этот отличный код:

def foo = [:]

примерно соответствует этому java-коду:

Object foo = new java.util.LinkedHashMap();

Ответ 3

Цитируя документ:

Обратите внимание, что [:] является пустым выражением карты.

... которая является единственной Map с size() возвращающей 0.) Сама по себе она редко полезна, но вы, конечно, можете добавлять значения в эту карту:

def emptyMap = [:]
assert emptyMap.size() == 0
emptyMap.foo = 5
assert emptyMap.size() == 1
assert emptyMap.foo == 5