Menu
CoddyTech

Lambda 函数第 1 部分

本课属于 Coddy GDScript 学习旅程的“逻辑与流程”单元。第 54 课,共 78 课。

lambda 是一种没有名称、以值的形式编写的函数。你可以像存储数字或字符串一样,将它存储在变量中:

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

它以 func 开头,后面是参数和冒号,和任何函数一样,但它没有名称。只有一条语句的函数体可以写在同一行。

要运行存储在变量中的 lambda,请使用参数调用它的 call() 方法:

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

add(5, 3) 无法运行:GDScript 会在脚本中查找名为 add 的函数,并在程序运行前报告 Function "add()" not found。

较长的 lambda 函数有一个缩进代码块。和其他函数一样,它需要使用 return 返回一个值:

var greet = func(player_name):
	var message = "Hello, " + player_name
	return message + "!"
print(greet.call("Ana"))
Hello, Ana!

没有 return 的 lambda 会返回 null,所以 func(n): n * 2 会计算出值,却把它丢掉。

参数和结果可以有类型:func(n: int) -> int: return n * 2。lambda 的值是 Callable,这是 GDScript 中表示“可调用对象”的数据类型。

challenge icon

挑战

简单

程序会读取三个整数:a、b 和 c。

  1. 创建一个有三个参数 x、y 和 z 的 lambda 函数,返回它们的乘积,并将其存储在名为 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())
	# 在这里创建 lambda 函数 multiply

	# 用 a、b 和 c 调用 multiply,并打印结果
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: GDScript 在线编译器