Есть ли у Groovy способ объединить 2 карты?

85

Первая карта - это опции по умолчанию [a: true, b: false]. Вторая карта - параметры, переданные пользователем [a:false]. Есть ли в Groovy метод слияния карт для получения[a: false, b:false] ?

Реализовать это в Groovy - не проблема. Я спрашиваю о методе из коробки

fedor.belov
источник

Ответы:

176

Вы можете использовать плюс:

assert [ a: true, b: false ] + [ a: false ] == [ a: false, b: false ]

Или сдвиг влево:

assert [ a: true, b: false ] << [ a: false ] == [ a: false, b: false ] 

Разница в том, что << правая карта добавляется к левой . Когда вы используете +, он создает новую карту на основе LHS и добавляет в нее правую карту.

tim_yates
источник
Также, возможно, стоит отметить, что, когда вы можете использовать +, вы также можете использовать +=:def m1 =[ a: true, b: false ]; m1 += [ a: false ] ; println (m1 == [ a: false, b: false ])
Patrice M.