[譯] Groovy 語法之Map

原文鏈接:http://groovy-lang.org/syntax.html

9. Map

有時(shí)在其他語言中稱為字典或關(guān)聯(lián)數(shù)組,Groovy具有 Map 功能。

Map 將鍵與值相關(guān)聯(lián),用冒號分隔鍵和值,使用逗號分隔每個(gè)鍵/值對,以及用方括號括起的整個(gè)鍵和值。

// 我們定義了一個(gè)顏色名稱的 map,與它們的十六進(jìn)制編碼的 html 色值相映射
def colors = [red: '#FF0000', green: '#00FF00', blue: '#0000FF']   

// 我們使用下標(biāo)符號來檢查與 red 鍵相關(guān)聯(lián)的內(nèi)容
assert colors['red'] == '#FF0000'    
// 我們還可以使用屬性表示法來斷言顏色 green 的十六進(jìn)制表示
assert colors.green  == '#00FF00'    

// 我們可以使用下標(biāo)符號來添加新的鍵/值對
colors['pink'] = '#FF00FF' 
// 或者屬性表示法,添加 yellow 
colors.yellow  = '#FFFF00'           

assert colors.pink == '#FF00FF'
assert colors['yellow'] == '#FFFF00'

assert colors instanceof java.util.LinkedHashMap

當(dāng)使用鍵的名稱時(shí),我們實(shí)際上在Map中定義了字符串鍵。Groovy創(chuàng)建的 map 實(shí)際上是java.util.LinkedHashMap的實(shí)例。

如果 map 中不存在對應(yīng)的鍵,則返回 null。例如:

assert colors.unknown == null

在上面的例子中,我們用了字符串類型的鍵,你也可以使用其他類型的值作為鍵:

def numbers = [1: 'one', 2: 'two']

assert numbers[1] == 'one'

在這里,我們使用數(shù)字作為鍵,因?yàn)閿?shù)字可以明確地被識別為數(shù)字,因此Groovy不會像我們之前的例子那樣創(chuàng)建字符串鍵。有種場景,你如果要傳遞一個(gè)變量代替鍵,讓該變量的值成為鍵:

// 與“Guillaume”名稱關(guān)聯(lián)的鍵實(shí)際上是“key”字符串,而不是與key變量關(guān)聯(lián)的值
def key = 'name'
def person = [key: 'Guillaume']      

// map 不包含 'name' 鍵
assert !person.containsKey('name')   
// map 包含 'key' 鍵
assert person.containsKey('key')  

您還可以傳遞帶引號的字符串以及鍵:["name": "Guillaume"]。您的字符串鍵必需是有效的標(biāo)識符,例如您想創(chuàng)建一個(gè)包含哈希的字符串鍵,如:["street-name": "Main street"]。

當(dāng)您需要在 map 定義中將變量值作為鍵傳遞時(shí),必須用括號括起變量或表達(dá)式

// 這一次,我們用括號括起key變量,讓解析器傳遞變量而不是定義字符串的鍵
person = [(key): 'Guillaume']        

// map 包含 'name' 鍵
assert person.containsKey('name')    
// map 不包含 'key' 鍵
assert !person.containsKey('key')
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,694評論 19 139
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,613評論 0 13
  • 先來一個(gè)食材大集合,還有蝦生菜一開始忘記拍了。有紅薯,金針菇,香菇,藕,腐竹,凍豆腐,芹菜,生菜,魚豆腐,蟹棒,蝦...
    何家小廚閱讀 3,119評論 21 31
  • 如果有什么理想和愿望,那就去做,如果只是想想而不落實(shí)于行動,那就不是真的想要。 一次只能集中于一個(gè)目標(biāo),多了你就會...
    花眼踩坑錄閱讀 376評論 2 1
  • 1,感恩我元旦買的漂亮的百合花開得特驕艷好喜歡,2,感恩早早起來很開心的去排練旗袍秀,3,感恩今天一整天活在愛和平...

友情鏈接更多精彩內(nèi)容