Menu
CoddyTech

マッチガード

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: 15

GDScriptには、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")
Hot

2つ目のパターンでは、t > 0は必要ありません。温度が0以下なら、すでに1つ目のパターンに一致しています。ガードには、ほかの変数やand、orを使った任意の条件を指定でき、どのパターンにも追加できます。5 when hard_mode:は、hard_modeがtrueの場合に限り、5に一致します。

challenge icon

チャレンジ

簡単

プログラムは年齢を整数として読み取り、ageに格納します。ガードを使ったmatch文で年齢層を出力してください。

  • 0から12:Child
  • 13から19:Teenager
  • 20から64:Adult
  • 65から120:Senior
  • その他の数値:Invalid age

各範囲には両端の値が含まれます。入力が15の場合、出力は次のとおりです。

Teenager

自分で試してみよう

extends Node

func _ready():
	var age := int(OS.read_string_from_stdin())
	# matchとガードを使って年齢層を出力する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: GDScriptオンラインコンパイラ