集合としての辞書
CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 32/78。
配列をセットに変換するには、配列をループして各値をキーにします。重複する値は同じキーになります:
var reports := ["spam", "scam", "spam"]
var banned := {}
for word in reports:
banned[word] = true
print(banned.keys()) # ["spam", "scam"]値がメンバーかどうかを確認するには、has()またはin演算子を使います。辞書では、どちらも値ではなくキーを調べます。
print(banned.has("scam")) # true
print("hello" in banned) # false
print("hello" not in banned) # true配列にもhas()がありますが、値を要素と1つずつ比較します。辞書はキーを直接検索するため、セットのメンバーシップチェックは要素が数千個あっても高速なままです。
セットに対するforループは、追加された順にその要素を処理します:
for word in banned:
print(word) # spam、次にscamチャレンジ
簡単パーティーの入り口でゲストを確認します。プログラムは入力を2行読み取ります。
- ゲストリスト:名前がスペースで区切られています。同じ名前が複数回書かれていることがあります。
- 到着する人々:名前がスペースで区切られています。
ゲストリストから集合 guests を作成します。リストにいる異なる人の人数を出力し、その後、到着する人ごとに1行ずつ出力します。リストにいる場合は NAME: welcome、いない場合は NAME: not on the list と出力します。入力が次の場合:
mia leo ana mia
mia sam ana出力は次のとおりです。
Guests on the list: 3
mia: welcome
sam: not on the list
ana: welcome自分で試してみよう
extends Node
func _ready():
var guest_list := OS.read_string_from_stdin().split(" ", false)
var arrivals := OS.read_string_from_stdin().split(" ", false)
var guests := {}
# ゲストの集合を作成する
# ゲストの人数を出力し、到着者を一人ずつ確認する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: GDScriptオンラインコンパイラ