マッチガード
CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 7/78。
ガードはパターンに条件を追加します。パターンの後にwhenと条件を記述します。値がパターンに一致し、かつ条件がtrueの場合にのみ、パターンが一致します。ガードはGodot 4.4以降で使用できます。
var hp := 15
match hp:
0:
print("Defeated")
var h when h < 20:
print("Low health: ", h)
_:
print("Healthy")Low health: 15GDScriptには、1..10のような範囲パターンはありません。ガード付きの束縛パターンで同じことができます。var h when h < 20:は、20未満のすべての値に一致し、その値にhという名前を付けます。
ガードがfalseの場合、matchは次のパターンに進みます。パターンは上から順に試されるため、順序によってどのブロックが実行されるかが決まります。
var temp := 32
match temp:
var t when t <= 0:
print("Freezing")
var t when t < 15:
print("Cold")
var t when t < 30:
print("Warm")
_:
print("Hot")Hot2つ目のパターンでは、t > 0は必要ありません。温度が0以下なら、すでに1つ目のパターンに一致しています。ガードには、ほかの変数やand、orを使った任意の条件を指定でき、どのパターンにも追加できます。5 when hard_mode:は、hard_modeがtrueの場合に限り、5に一致します。
チャレンジ
簡単プログラムは年齢を整数として読み取り、ageに格納します。ガードを使ったmatch文で年齢層を出力してください。
0から12:Child13から19:Teenager20から64:Adult65から120:Senior- その他の数値:
Invalid age
各範囲には両端の値が含まれます。入力が15の場合、出力は次のとおりです。
Teenager自分で試してみよう
extends Node
func _ready():
var age := int(OS.read_string_from_stdin())
# matchとガードを使って年齢層を出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: GDScriptオンラインコンパイラ