Lambda 函数第 1 部分
本课属于 Coddy GDScript 学习旅程的“逻辑与流程”单元。第 54 课,共 78 课。
lambda 是一种没有名称、以值的形式编写的函数。你可以像存储数字或字符串一样,将它存储在变量中:
var add = func(a, b): return a + b它以 func 开头,后面是参数和冒号,和任何函数一样,但它没有名称。只有一条语句的函数体可以写在同一行。
要运行存储在变量中的 lambda,请使用参数调用它的 call() 方法:
print(add.call(5, 3))8add(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 中表示“可调用对象”的数据类型。
挑战
简单程序会读取三个整数:a、b 和 c。
- 创建一个有三个参数
x、y和z的 lambda 函数,返回它们的乘积,并将其存储在名为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())
# 在这里创建 lambda 函数 multiply
# 用 a、b 和 c 调用 multiply,并打印结果
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: GDScript 在线编译器