课时 8 · 阶段项目:命令行小工具

课时 8 · 阶段项目:命令行小工具(Lua 语言基础):综合运用基础语法完成一个小项目。含可运行的示例代码、练习与验收要点,示例锁定 Lua 5.1,可在站内在线运行验证。

教程/第一部分 · Lua 语言基础更新于 2026-10-074 个小节 教程第 10 / 23 篇 Lua基础语法

本课的代码可以就地复制;点代码块右上角的「运行这段」, 会带着这段代码打开 Lua 在线运行器 并直接跑出结果 (课程示例统一按 5.1 跑;运行器里也能切到 5.3)。

本课的代码跑在 996 引擎里,用到的是服务端接口(changeexp、 SetInt 这类),在线运行器里没有这些函数。 每个函数的签名都能在 文档检索 里按名字查到原文。

本课目标

  • 综合运用基础语法完成一个小项目。

知识讲解

项目:制作背包物品管理小工具,支持添加、删除、查询、排序四种操作,通过命令行交互。本项目的意义在于第一次完成「需求拆解 → 函数组织 → 输入输出 → 基础调试」的完整闭环,为后续引擎内脚本开发建立工程感。

示例:项目骨架

local bag = {}

function add_item(name, count)
    for _, item in ipairs(bag) do
        if item.name == name then
            item.count = item.count + count
            return
        end
    end
    table.insert(bag, { name = name, count = count })
end

function remove_item(name, count)
    for i, item in ipairs(bag) do
        if item.name == name then
            item.count = item.count - count
            if item.count <= 0 then table.remove(bag, i) end
            return
        end
    end
end

function list_bag()
    for i, item in ipairs(bag) do
        print(i, item.name, item.count)
    end
end

add_item('金创药(小量)', 10)
add_item('铁矿', 50)
remove_item('铁矿', 20)
list_bag()

练习任务

  • 在骨架基础上增加「查询(按名称显示数量)」和「排序(按数量降序)」两个函数;再为每个操作补充一个输入合法性判断。

参考:验收要点

  • 查询函数返回 nil 时给出「背包中没有该物品」提示;
  • 排序使用 table.sort 并自定义比较函数;
  • 添加负数数量时拒绝并提示;
  • 删除超过持有数量时按持有数量扣减或拒绝,逻辑自洽。

知识讲解

本章课时内容依据:课程大纲第一阶段(课时 1—8)教学目标与作业设计,逐课时沿用,未作变动。

本篇依据
  • 《996 新三端 Lua 开发教学技术手册》课时 8

参数与取值以你本机版本的官方帮助文档为准,不同版本之间有过调整。