lua文件函数调用

lua文件函数调用lua 文件结构 lua 脚本是面向过程的语言 一般文件结构 Data lualocal iData 0local arrData local 表示局部变量或函数只要没有 local 声明就是全局的 iOpen 是全局变量 OptData 是私有函数 localfunctio iOpen 10 iData iData iOpe

lua脚本是面向过程的语言,一般文件结构:

Data.lua

local _iData = 0 local _arrData = {} --local表示局部变量或函数 只要没有local声明就是全局的 --iOpen是全局变量 --OptData是私有函数 local function OptData() iOpen = 10 _iData = _iData + iOpen end function OptArrData(key, value) _arrData[key] = value end function Trace() --因为是面向过程 所以 OptData 函数需要写在调用者 Trace 之前 OptData() OptArrData(1, 10) print(_arrData[1], _iData) end 

然后我们希望在其他文件中调用Data.lua

一、模块方式

所以我们的 Data.lua 文件将稍作调整
我们定义Data.lua 在工作目录下 ./data/Data.lua

--在文件的头部添加 module 定义一个不重复的模块名 一般使用文件路径 module("data.Data",package.seeall) local _iData = 0 local _arrData = {} 省略......

定义好模块之后 我们在 Test.lua 中调用

Test.lua

function Test() --导入包 require("data.Data") --用包调用函数 data.Data:Trace() --输出:10 11 end

Test.lua

function Test() --导入包 require "data.Data" --用包调用函数 data.Data:OptArrData(1, 10) --相当于 _arrData[1] = 10 data.Data.OptArrData(1, 20) --这里却是 第一个参数接收的是 Data.lua 自身的表  --相当于 _arrData[Data] = 1 结果可想而知 end

一、表结构方式

因为lua最主要的结构是 Table 也为了避免面向结构带来的优先级困扰所以可以直接将一个lua文件就作为一个表来调用

--声明一张表  local Data = {} local _iData = 0 local _arrData = {} --这个时候即使调用者在被调用者之前声明也没关系 因为表数据被完全读取 function Data:Trace() OptData() OptArrData(1, 10) print(_arrData[1], _iData) end --将函数作为表键值存下来 这时候不能再使用 local 描述符 function Data:OptData() iOpen = 10 _iData = _iData + iOpen end function Data:OptArrData(key, value) _arrData[key] = value end --注意最后将表返回回去 return Data
function Test() --直接拿到对象 然后调用函数 local oData = require("data.Data") oData:Trace() --输出:10 11 end

用这种方式将可以实现 面向对象的类操作 以后接着聊

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220581.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午8:08
下一篇 2026年3月17日 下午8:09


相关推荐

  • dockerfile创建镜像的命令_什么是镜像

    dockerfile创建镜像的命令_什么是镜像Dockerfile创建完成后,可以使用dockerbuild命令根据Dockerfile构建一个镜像。1.首先准备好Dockerfile:2.执行构建命令:dockerbuild-tsecond:v1.0.注意最后有个点,代表使用当前路径的Dockerfile进行构建,-tsecond:v1.0取名并设定版本为v1.0。dockerbuild:用Dock…

    2025年10月29日
    4
  • native DRAMAtical Murder_project diablo 2

    native DRAMAtical Murder_project diablo 2投影投影是JMESPath的关键特性之一。它允许您将表达式应用于元素集合。有五种投影:列表投影切片投影对象投影展平投影过滤投影处理投影需要注意的点投影分为两个步骤。左侧(LHS)创建一

    2022年7月29日
    9
  • (ExcelVBA编程入门范例)

    (ExcelVBA编程入门范例)很喜爱VBA,喜欢使用她对Excel操作实现所需的功能,更喜欢使用VBA控制Excel以及实现结果后的那种感觉。一直都想对ExcelVBA进行系统的整理和归纳,但由于对Excel及VBA了解得不够深入,总觉得无从下手。再加上又是利用少得可怜的业余时间进行学习,时断时续,学习的主线和思路也经常因为工作或其它的事情而打断。但喜欢学习的人总会挤得出时间来的,要想掌握或者是精通一门知识和技术不能有任何借口

    2022年6月6日
    54
  • idea后端开发必备插件:MybatisCodeHelperPro[通俗易懂]

    idea后端开发必备插件:MybatisCodeHelperPro[通俗易懂]官方文档在这:https://gejun123456.github.io/MyBatisCodeHelper-Pro/#/

    2026年2月8日
    11
  • 拆解 OpenClaw 源码:1000 行代码复刻 AI Agent 核心架构

    拆解 OpenClaw 源码:1000 行代码复刻 AI Agent 核心架构

    2026年3月13日
    3
  • 最经典的黑客入门教程[通俗易懂]

    最经典的黑客入门教程[通俗易懂]第一节、黑客的种类和行为以我的理解,“黑客”大体上应该分为“正”、“邪”两类,正派黑客依靠自己掌握的知识帮助系统管理员找出系统中的漏洞并加以完善,而邪派黑客则是通过各种黑客技能对系统进行攻击、入侵或者做其他一些有害于网络的事情,因为邪派黑客所从事的事情违背了《黑客守则》,所以他们真正的名字叫“骇客”(Cracker)而非“黑客”(Hacker),也就是我们平时经常听说的“黑客”(Cacker)和“红客”(Hacker)。无论那类黑客,他们最初的学习内容都将是本部分所涉及的内容,而且掌握的基本技能也都是.

    2022年6月7日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号