You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua全局变量通信:Computer Craft库存系统跨文件数据传递方案

Computer Craft 库存系统优化实现方案

问题场景

我在Computer Craft中开发库存系统,现有文件结构:

  • 根目录下的 inv.lua(主控脚本)
  • chestAPI 目录下的 inv_scan.lua:负责扫描所有库存,将数据存入二维数组,扫描操作耗时较长
  • chestAPI 目录下的 inv_list.lua:读取扫描数据并输出至显示器

核心需求:

  • 仅在开机或点击显示器刷新按钮时执行一次扫描,避免重复扫描浪费性能
  • 主控脚本 inv.lua 调用扫描脚本获取数据,用户需要显示物品时,将数据传递给 inv_list.lua 输出
  • 拒绝单文件实现,避免代码结构混乱

此前尝试用 require() 时,会导致 inv_list.lua 每次触发扫描,无法达到优化效果。

可行解决方案

通过编写最小示例验证了可行方案,具体代码如下:

scan.lua(对应原 inv_scan.lua)

-- 模拟耗时的库存扫描逻辑
function scan()
    data1 = 1 + 1
    data2 = 4/2
    return data1, data2
end
-- 负责将数据输出到显示器
function print(data1, data2)
    print(data1)
    print(data2)
end

main.lua(对应原 inv.lua)

local scanner = require("scan.lua")
local printer = require("print.lua")

-- 按需执行扫描:仅在开机/刷新触发时调用一次
data1, data2 = scanner.scan()

-- 监听用户输入,按需触发数据输出
while true do
    input = read()
    if input == "print" then
        printer.print(data1, data2)
    end
end

该方案达成的效果:

  • 扫描操作仅在主动调用 scanner.scan() 时执行,彻底避免重复耗时扫描
  • 扫描数据由主控脚本统一持有,需要显示时传递给输出脚本处理
  • 代码拆分清晰,保持模块化结构,便于后续扩展存取物品功能

内容的提问来源于stack exchange,提问作者Nola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:08:17