Menu
CoddyTech

ラムダ関数 パート1

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

lambdaは、値として記述される名前のない関数です。数値や文字列のように、変数に格納できます:

var add = func(a, b): return a + b

他の関数と同様に、func、パラメーター、コロンで始まりますが、名前はありません。1つの文からなる本体は、同じ行に置くことができます。

変数に格納されたラムダを実行するには、引数を指定してその call() メソッドを呼び出します。

print(add.call(5, 3))
8

add(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における「呼び出し可能なもの」を表す型です。

challenge icon

チャレンジ

簡単

プログラムは3つの整数、a、b、cを読み込みます。

  1. 3つのパラメーターx、y、zを受け取り、それらの積を返すラムダを作成し、multiplyという名前の変数に格納します。
  2. 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 を呼び出し、結果を出力する
quiz icon腕試し

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

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

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