Menu
CoddyTech

添加与删除

本课属于 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。

challenge icon

挑战

简单

程序会逐行读取命令,直到读到 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]
		# 添加或移除物品

	# 输出物品清单
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: GDScript 在线编译器