带函数的表
本课属于 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 面向对象编程的基础。
挑战
简单创建一个名为 calculator 的表,其中包含四个算术函数:
add(a, b):返回a与b的和subtract(a, b):返回a减去b的结果multiply(a, b):返回a与b的乘积divide(a, b):返回a除以b的结果
你会收到三个输入:
- 运算名称(以下之一:
add、subtract、multiply、divide) - 第一个数字
- 第二个数字
根据运算名称调用 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 表中对应的函数
-- 并打印结果这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
自己练习: Lua 在线编译器