Menu
CoddyTech

配列パターン

CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 8/78。

配列パターンは配列リテラルのように記述します。同じサイズの配列に一致し、その要素が1つずつ一致します。パターンの各要素には、リテラル、_、またはバインディングを指定できます。

var point := [0, 7]
match point:
	[0, 0]:
		print("Origin")
	[0, var y]:
		print("On the y-axis at ", y)
	[var x, var y]:
		print("Point ", x, ", ", y)
On the y-axis at 7

サイズは同じでなければなりません: [var x, var y] は [1, 2, 3] と一致しません。任意の数の追加要素(0個を含む)を許可するには、.. を最後の要素として置き、空の配列には [] と書きます:

var cmd := ["give", "sword", "Ana"]
match cmd:
	[]:
		print("Nothing typed")
	["give", var item, ..]:
		print("Giving ", item)
Giving sword

ガードは配列パターンでも機能します。[var a, var b] when a == b: は、等しい 2 つの要素に一致します。

配列パターンはArray型のみに一致します。split()が返すPackedStringArrayは一致しません。結果をArrayとして宣言した変数に格納すると、型が変換されます。

var words: Array = "go north".split(" ")
match words:
	["go", var dir]:
		print("Heading ", dir)
Heading north
challenge icon

チャレンジ

簡単

プログラムは x,y の形式で書かれた点を読み取り、2つの整数として配列 point に格納します(ここまでは記述済みです)。配列パターンを使った match 文で、最初に一致するルールを使って点の位置を出力してください。

  • 両方とも 0:Origin
  • x が 0:On the y-axis at y= の後に y
  • y が 0:On the x-axis at x= の後に x
  • x と y が等しい:On the diagonal at の後にその値
  • それ以外:2つの値を使った Point at (x, y)

入力が 0,5 の場合、出力は次のとおりです。

On the y-axis at y=5

入力が 2,7 の場合は、次のとおりです。

Point at (2, 7)

自分で試してみよう

extends Node

func _ready():
	var parts := OS.read_string_from_stdin().split(",")
	var point := [int(parts[0]), int(parts[1])]
	# pointを配列パターンと照合する
quiz icon腕試し

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

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

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