ラムダ関数 パート1
CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 54/78。
lambdaは、値として記述される名前のない関数です。数値や文字列のように、変数に格納できます:
var add = func(a, b): return a + b他の関数と同様に、func、パラメーター、コロンで始まりますが、名前はありません。1つの文からなる本体は、同じ行に置くことができます。
変数に格納されたラムダを実行するには、引数を指定してその call() メソッドを呼び出します。
print(add.call(5, 3))8add(5, 3) は動作しません。GDScript はスクリプト内で add という名前の関数を探し、プログラムの実行前に Function "add()" not found と報告します。
より長いラムダはインデントされたブロックを持ちます。ほかの関数と同様に、値を返すには return が必要です:
var greet = func(player_name):
var message = "Hello, " + player_name
return message + "!"
print(greet.call("Ana"))Hello, Ana!returnのないラムダはnullを返すため、func(n): n * 2は値を計算して、それを捨ててしまいます。
パラメーターと戻り値には型を指定できます: func(n: int) -> int: return n * 2。ラムダの値はCallableで、GDScriptにおける「呼び出し可能なもの」を表す型です。
チャレンジ
簡単プログラムは3つの整数、a、b、cを読み込みます。
- 3つのパラメーター
x、y、zを受け取り、それらの積を返すラムダを作成し、multiplyという名前の変数に格納します。 a、b、cを渡して呼び出し、結果を出力します。
入力が2、3、4の場合、出力は次のとおりです。
24自分で試してみよう
extends Node
func _ready():
var a := int(OS.read_string_from_stdin())
var b := int(OS.read_string_from_stdin())
var c := int(OS.read_string_from_stdin())
# ここでラムダ関数 multiply を作成する
# a、b、c を引数にして multiply を呼び出し、結果を出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: GDScriptオンラインコンパイラ