当前位置: 首页 > news >正文

西安哪里做网站解决问题的网站

西安哪里做网站,解决问题的网站,展示形网站开发,局域网站建设银行信用卡Lua 基础相关知识 第四期 require 模块,通常是一个表,表里存储了一些字段和函数,单独写在一个 lua 文件。 例如,这是一个 tools.lua 文件,定义了一个局部 tools 表,包含一个 log 函数,可以传…

Lua 基础相关知识 第四期

require

模块,通常是一个表,表里存储了一些字段和函数,单独写在一个 lua 文件。

例如,这是一个 tools.lua 文件,定义了一个局部 tools 表,包含一个 log 函数,可以传入标题和信息,函数内部格式化字符串输出。

最后要 return tools,在 require 加载这个模块时才能拿到返回的 tools 表。

local tools = {}tools.log = function (title, message)print(string.format("[%s] %s", title, message))
endreturn tools

在其他 lua 文件中加载这个 tools 模块,进行使用。

local tools = require "tools"
tools.log("console", "hello lua")-- [console] hello lua

标准库也可以通过 require 加载,换个名称。

local m = require "math"
local n = m.abs(-1)
print(n)-- 1

require 会做已加载的检查,如果已经加载过一个模块了,就不会再重复加载了。

如果要移除原来加载的模块,可以把模块从 package.loaded 中删除。

package.loaded.tools = nil

loadfile dofile require

这三个函数都是用来加载和执行外部 lua 脚本的,不过有一些区别:

  • loadfile 加载编译指定的 lua 文件,但不执行文件中的代码,需要手动调用(返回值是一个函数)
  • dofile 加载编译并执行指定的 lua 文件(返回值是文件中最后一个表达式的值)
  • require 先检查 package.loaded 是否已加载模块,若已加载,则直接返回,若不存在,则编译执行一次,并记录到 package.loaded(返回值通常是一个表)

这里所说的执行,是指被加载的 lua 文件中,写在表外面可以被执行的语句,例如在 tools 中添加一行打印,表示欢迎使用这个模块。

local tools = {}print("Welcome to use this tools module!")tools.log = function (title, message)print(string.format("[%s] %s", title, message))
endreturn tools

先尝试使用 loadfile,注意,第一行代码加载的是 tools.lua,需要增加 .lua 后缀名,第一行并没有输出。

第二行代码打印了 loadfile 的返回值,输出的是一个 function。

第三行代码手动调用了返回的函数,才执行了 tools.lua 里面的一行打印。

local tools = loadfile("tools.lua")
print(tools)  -- function: 0000025E2F7791D0
tools()       -- Welcome to use this tools module!

再尝试一下 dofile,同样的,第一行代码加载的是 tools.lua,第一行就输出了。

第二行代码打印的返回值是 table,也就是 tools.lua 最后一行的 return tools

第三行代码则不是直接调用 tools 了,因为它并不是一个函数。应该调用 tools.log

local tools = dofile("tools.lua")  -- Welcome to use this tools module!
print(tools)                       -- table: 00000150C5D61D30
tools.log("console", "hello lua")  -- [console] hello lua

最后回到 require,注意,第一行代码没有 .lua 后缀名,第一行就输出了。

后面两行代码和 dofile 是一致的。

local tools = require("tools")     -- Welcome to use this tools module!
print(tools)                       -- table: 0000025D08BF13D0
tools.log("console", "hello lua")  -- [console] hello lua

如果再次加载 lua 文件,loadfile 依然是需要手动调用,dofile 会再次输出,require 则只输出一次,除非移除已加载的模块。

local tools_loadfile = loadfile("tools.lua")
local tools_loadfile = loadfile("tools.lua")local tools_dofile = dofile("tools.lua")  -- Welcome to use this tools module!
local tools_dofile = dofile("tools.lua")  -- Welcome to use this tools module!local tools_require = require("tools")    -- Welcome to use this tools module!
local tools_require = require("tools")package.loaded.tools = nil
local tools_require = require("tools")    -- Welcome to use this tools module!
http://www.yayakq.cn/news/929835/

相关文章:

  • 好网站开发公司德阳建设机械网站
  • c 网站开发需要什么简述网站建设的方案
  • 哪个网站开发培训好公司网站域名及空间
  • 如何做一个网站赚钱西安网站开发高端网站开发
  • 手机网站方案长乐网站建设
  • 四川城乡建设厅官方网站网站建设都需要哪些东西
  • 怎么做网站筛选功能网页制作收费吗
  • 学院网站建设的要求商务网站信息审核的重要性在于
  • 做品牌推广网站需要多少钱建设银行网站 无法访问
  • 佛山建站公司排名免费cn域名注册
  • wordpress 4 chmseo公司广州
  • 网站怎么做跳转页面企业运营管理名词解释
  • 番禺市桥网站建设公司龙岩seo推广
  • 网站用户建设的设计与实现南昌seo排名外包
  • 服务器放网站做战袍网站
  • 阿里云oss做视频网站源码网棋牌
  • 南京网站排名外包深圳哪家网站建设服务好
  • 番禺建设网站公司郑州高端网站公司
  • 做网站学哪些语言宜昌网页设计
  • 凡科网站建设平台好么百度站长工具抓取诊断
  • wordpress福利源码河北网站优化公司
  • 门头沟区专业网站制作网站建设南昌做兼职的网站
  • 如何利用服务器做网站如何给网站添加外链
  • 应用分析网站着陆页设计网站国内
  • 网站主目录wordpress蜘蛛记录
  • 网站开发环境准备zencart 一个产品网站下单
  • 潍坊做网站的那家好百度网站推广费用多少钱
  • ppp模式在网站建设的谷德设计网展示设计
  • 静态网站开发考虑什么网页设计模板html代码文本大小
  • 钓鱼网站下载wordpress好看的视频播放器