### 10. 字典 Dictionary
> 配套示例:`examples/10_dictionary.gd`
字典是键值对集合,相当于其他语言的 map / object。key-value
```gdscript
var player := {
"name": "Alice",
"level": 10,
"hp": 100,
}
# 上述player是一个字典,两个数据用:来分辨键(key)和值(value),比如"name": "Alice" 键就是name,值就是Alice,每对键值用,分割
# 访问(两种语法都行) 访问=读取
player["name"] # "Alice"
player.level # 10(key 是合法标识符时才能这样)
# 增 / 改
player["mp"] = 50
player["hp"] = 80
# 删
player.erase("level")
# 查
player.has("hp")
player.size()
# 遍历
for key in player:
print(key, " = ", player[key])
```
字典也是按引用传递。
---
## 第 10 节:字典 Dictionary
##
## 演示 Dictionary(键值对)的常用操作。
extends Node
enum STATE{IDLE,RUN} #这里用枚举来举例使用数组
func _ready() -> void:
# 创建
var player := {
"name": "Alice",
"level": 10,
"hp": 100,
}
#var player :Dictionary = {
#"name": "Alice",
#"level": 10,
#"hp": 100,
#}
# 访问
print("名字:", player["name"])
print("等级:", player.level) # 也可以用点语法(key 是合法标识符时)
# 修改
player["hp"] = 80
print("修改后血量:", player["hp"])
# 新增
player["mp"] = 50
print("新增魔法值后:", player)
# 删除
player.erase("level")
print("删除等级后:", player)
# 查询
print("有 hp 吗:", player.has("hp"))
print("一共有 ", player.size(), " 个字段")
# 遍历 key
print("--- 遍历 keys ---")
for key in player.keys():
print(key, " = ", player[key])
# 遍历 value
print("--- 遍历 values ---")
for v in player.values():
print("值:", v)
# 简写:直接遍历 dict 等价于遍历 keys
print("--- 直接 for in dict ---")
for key in player:
print(key, " -> ", player[key])
var v1:Array = [1,2,3,4,5,2,3]
print(v1)
var v2:Dictionary ={
"name":"siki",
"name2":"siki"
}
# 注意:字典中的键 不可以相同或者重复,否则报错,但数组可以有相同的或者重复的值
