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()はブール値を返すため、条件として直接使用できます。if inventory.erase("map"):は、"map"がメンバーだった場合にのみ、そのブロックを実行します。

clear()はすべてのメンバーを削除し、size()はメンバーの数を数えます。また、メンバーがないセットではis_empty()はtrueになります。

challenge icon

チャレンジ

簡単

プログラムは、行が done になるまで、1 行に 1 つずつコマンドを読み込みます。各コマンドは 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オンラインコンパイラ