配列パターン
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チャレンジ
簡単プログラムは x,y の形式で書かれた点を読み取り、2つの整数として配列 point に格納します(ここまでは記述済みです)。配列パターンを使った match 文で、最初に一致するルールを使って点の位置を出力してください。
- 両方とも
0:Origin xが0:On the y-axis at y=の後にyyが0:On the x-axis at x=の後にxxと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を配列パターンと照合する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: GDScriptオンラインコンパイラ