Menu
CoddyTech

表的构造与 unpack()

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

Lua 提供了一对互补的多值处理技巧:表构造和 unpack()。处理需要灵活处理参数的函数时,这些技巧特别有用。你可以使用带花括号的表构造器语法,将多个值收集到类似列表的表中。这样可以将所有值收集到一个表结构中。
local args = {10, 20, 30}
print(args[1])  -- 输出:10
print(#args)    -- 输出:3
The unpack() 函数执行相反的操作。它接收一个列表式表,并将其中的所有元素作为单独的值返回。这样你就可以将表中的内容作为单独的参数传递给函数。重要:虽然较新版本的 Lua(5.2+)将此函数移到了 table.unpack(),但此环境运行的是 Lua 5.1,因此你必须使用全局 unpack() 函数。
local numbers = {5, 10, 15}
print(unpack(numbers))  -- 输出:5    10    15
这些技巧可以无缝配合使用。你可以将值收集到表中,操作这个表,然后再将它解包为单独的值。
challenge icon

挑战

简单

编写一个函数 forwardArguments,接收三个数字 a、b 和 c,并通过构造表和使用 unpack() 返回它们的和。

使用 {a, b, c} 语法创建一个包含这三个参数的表,然后解包这些值,并将它们传递给另一个用于计算它们总和的函数。

注意:请使用全局 unpack() 函数,而不是 table.unpack(),以确保与此环境兼容。

逻辑:

  • 使用 {a, b, c} 创建一个包含这三个参数的表
  • 创建一个名为 sum 的独立函数,接收三个参数并返回它们的和
  • 使用 unpack() 将表中的值传递给 sum 函数
  • 返回 sum 函数的结果

参数:

  • a(数字):第一个数字
  • b(数字):第二个数字
  • c(数字):第三个数字

返回值:三个数字的和(数字)

亲手试试

function forwardArguments(a, b, c)
    -- 创建一个单独的函数来计算总和

    -- 创建一个包含全部三个参数的表

    -- 将表中的值解包并传给求和函数
    -- 提示:使用全局函数 'unpack' 展开表中的参数

end
quiz icon自我测试

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

逻辑与流程中的所有课

自己练习: Lua 在线编译器