Menu
CoddyTech

mapメソッド

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

高階関数とは、別の関数を引数として受け取る関数です。配列にはそのような関数がいくつかあり、map()はその最初のものです。

map()は配列の各要素に関数を適用し、結果を同じ順序で格納した新しい配列を返します。

func square(n):
	return n * n
var numbers = [1, 2, 3, 4, 5]
var squares = numbers.map(square)
print(squares)
[1, 4, 9, 16, 25]

関数は括弧を付けずに名前で渡します。map(square)は関数を渡しますが、map(square())はその場で関数を呼び出そうとします。次にmap()は各要素に対して関数を1回ずつ呼び出します。1は1に、2は4に、3は9になり、その後も同様です。

短い計算なら、ラムダを使うことで関数を別に定義する必要がありません:

var squares = numbers.map(func(n): return n * n)

新しい配列は元の配列と同じサイズで、numbers自体は変化しません。結果は要素とは異なる型になることがあります。

var words = ["apple", "kiwi", "banana"]
print(words.map(func(w): return w.length()))
[5, 4, 6]

map() は、Array[int] のような型付き配列に対して呼び出した場合でも、通常の Array を返します。その結果を Array[int] 型の変数に格納すると、プログラムはエラーで停止するため、型指定のない変数または Array に格納してください。

split() は map() を持たない PackedStringArray を返します。まず Array に変換します。Array("1,2,3".split(",")).map(func(s): return int(s)) は [1, 2, 3] を返します。

challenge icon

チャレンジ

簡単

文字列の配列 strings を受け取り、すべての文字列を大文字にした新しい配列を返す、convert_to_uppercase という名前の関数を書いてください。

ループを使わず、ラムダと map() を使ってください。たとえば、convert_to_uppercase(["hello", "world"]) は ["HELLO", "WORLD"] を返します。

テストでは convert_to_uppercase() を呼び出します。自分では呼び出さず、何も出力しないでください。

自分で試してみよう

func convert_to_uppercase(strings: Array[String]):
	# ここにコードを書いてください
	pass
quiz icon腕試し

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

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

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