Groovy - Criar Map diretamente com uma chave String

Posted . Visible to the public.

Quando queremos usar o valor de uma variável como a chave do nosso mapa

String key = 'KEY CERTA'

Naturalmente, todos sabem que temos a possibilidade de fazer esta operação em dois passos: (1) Criar mapa + (2) Acrescentar chave-valor

Map x = [:]
x[key] = 'x'

Mas e se quisermos criar o mapa diretamente com o novo valor:

// ERRADOS PEGAM TEXTO 'KEY'
Map x1 = [key:'x1']
Map x2 = ['key':'x2']
Map x3 = ["key":'x3']

// PROVAVELMENTE ERRADO (DEPENDENDO DO USO) POIS A KEY É UM GSTRING (POTENCIAIS PROBLEMAS DE HASH)
Map x4 = ["${key}":'x4']

// CORRETO AO USAR A STRING DESEJADA COMO CHAVE
Map x5 = [(key):'x5']

// VIDE RESULTADOS
println x1
println x2
println x3
println x4
println x5

Atenção: Perceba que no caso precisarmos usar uma Integer key ao invés de uma String key, o exemplo desaconselhado do x4 se torna duplamente indesejado ao converter o tipo da chave de Integer para GString!

Fonte: http://groovy-lang.org/groovy-dev-kit.html#_map_literals Show archive.org snapshot

Bruno Vieira
Last edit
Bruno Vieira
Posted by Bruno Vieira to ZeroGlosa (2016-10-10 13:59)