Menu
CoddyTech

带函数的表

本课属于 Coddy Lua 学习旅程的“面向对象编程”单元。第 1 课,共 70 课。

在 Lua 中,表的用途非常广泛。除了存储数据,它们还可以存储函数。这样你就能把相关操作组合在一起,让代码更有条理,也更容易管理。

要把函数放在表中,只需像赋值其他值一样,将它赋给一个键:

local myTable = {
    greet = function(name)
        return "Hello, " .. name
    end
}

print(myTable.greet("Alice"))  -- 输出:Hello, Alice

你也可以单独定义函数,然后将它添加到表中:

local myTable = {}

myTable.greet = function(name)
    return "Hello, " .. name
end

或者使用这种更简洁的简写语法:

local myTable = {}

function myTable.greet(name)
    return "Hello, " .. name
end

这三种方法都会产生相同的结果。你可以使用点表示法调用函数:myTable.greet("Alice")。这种将函数与数据打包在一起的模式,是 Lua 面向对象编程的基础。

challenge icon

挑战

简单

创建一个名为 calculator 的表,其中包含四个算术函数:

  • add(a, b):返回 a 与 b 的和
  • subtract(a, b):返回 a 减去 b 的结果
  • multiply(a, b):返回 a 与 b 的乘积
  • divide(a, b):返回 a 除以 b 的结果

你会收到三个输入:

  1. 运算名称(以下之一:add、subtract、multiply、divide)
  2. 第一个数字
  3. 第二个数字

根据运算名称调用 calculator 表中对应的函数,并输出结果。

亲手试试

-- 读取输入
local operation = io.read()
local num1 = tonumber(io.read())
local num2 = tonumber(io.read())

-- TODO:创建一个包含四个函数的 calculator 表:
-- add(a, b), subtract(a, b), multiply(a, b), divide(a, b)


-- TODO:根据操作名称调用 calculator 表中对应的函数
-- 并打印结果
quiz icon自我测试

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

面向对象编程中的所有课

自己练习: Lua 在线编译器