添加与删除
本课属于 Coddy GDScript 学习旅程的“逻辑与流程”单元。第 33 课,共 78 课。
要添加一个成员,请将 true 赋给它的键。添加一个已经在集合中的成员不会产生任何变化,所以如果你需要知道它是否是新成员,请先用 has() 检查:
var inventory := {"rope": true}
if inventory.has("torch"):
print("Already have torch")
else:
inventory["torch"] = true
print("Added torch")要删除一个成员,请调用 erase()。如果成员已被删除,它会返回 true;如果成员不在集合中,则返回 false。成员不存在并不会导致错误:
print(inventory.erase("rope")) # true
print(inventory.erase("map")) # false
print(inventory) # { "torch": true }由于 erase() 返回布尔值,你可以直接将它用作条件:只有当 "map" 是成员时,if inventory.erase("map"): 才会运行其代码块。
clear() 会移除所有成员,size() 会统计成员数量,而没有成员的集合中,is_empty() 的值为 true。
挑战
简单程序会逐行读取命令,直到读到 done。每条命令都是 add ITEM 或 remove ITEM。起始代码已经将每条命令拆分为 action 和 item。
- 对于
add:如果项目是新的,就将它添加到集合inventory中,并输出Added ITEM。否则,输出Already have ITEM。 - 对于
remove:如果项目在集合中,就将它移除并输出Removed ITEM。否则,输出No ITEM to remove。
读到 done 后,输出 Inventory: ,后面接用 , 连接的成员;如果集合为空,则输出 Inventory: empty。对于以下输入:
add torch
add rope
add torch
remove map
remove rope
done输出为:
Added torch
Added rope
Already have torch
No map to remove
Removed rope
Inventory: torch亲手试试
extends Node
func _ready():
var inventory := {}
while true:
var command := OS.read_string_from_stdin()
if command == "done":
break
var parts := command.split(" ")
var action := parts[0]
var item := parts[1]
# 添加或移除物品
# 输出物品清单
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: GDScript 在线编译器