Menu
CoddyTech

函数是一等值

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

在 Lua 中,函数不只是执行任务的代码块。它们也是值,可以像其他数据类型一样处理。这意味着你可以像处理数字、字符串或表一样处理函数。

你可以把一个函数存储在变量中:

local greet = function()
    print("Hello!")
end

greet()  -- 输出:Hello!

这里,函数被赋给变量 greet,你可以像调用任何普通函数一样调用它。这为你组织代码的方式带来了强大的可能性。

函数也可以作为参数传递给其他函数。当你想让一个函数使用另一个函数定义的行为时,这尤其有用:

function executeAction(action)
    action()
end

local sayHello = function()
    print("Hello from a function!")
end

executeAction(sayHello)  -- 输出:Hello from a function!

在这个示例中,executeAction 接收一个函数作为参数,并调用它。传入函数 sayHello 的方式,就像传入数字或字符串一样。

函数甚至可以返回其他函数。这样你就能根据特定条件或参数动态创建函数:

function createMultiplier(factor)
    return function(number)
        return number * factor
    end
end

local double = createMultiplier(2)
print(double(5))  -- 输出:10
challenge icon

挑战

简单

编写一个函数 applyOperation,接收 a、b 和 operation,并返回对这两个数字调用操作函数后的结果。

operation 参数是一个表,其中包含一个函数。调用该函数时,会将 a 和 b 作为参数传入。

逻辑:

  • 使用键 "func" 从 operation 表中提取函数
  • 将 a 和 b 作为参数传入,调用该函数
  • 返回结果

参数:

  • a(数字):第一个数字
  • b(数字):第二个数字
  • operation(表):一个表,其中在键 "func" 处存储了一个函数

返回值:将 a 和 b 传入操作函数调用后得到的结果(数字)

亲手试试

function applyOperation(a, b, operation)
    -- 在这里编写代码
end
quiz icon自我测试

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

逻辑与流程中的所有课

自己练习: Lua 在线编译器