Lua (require) 调用不必要的打印所需的文件名
2022-1-25 16:37:53
收藏:0
阅读:84
评论:3
当 testt.lua 中调用 require 时,有两个返回值 movee 和 movee.lua。
movee 大多数情况下是一个需要被调用的类,但应该能够接受直接调用带参数的情况。
movee.lua
local lib = {} --这是类数组
function lib.moveAround( ... )
for i,direction in ipairs(arg) do
print(direction)
end
end
function lib.hello()
print("Hello water jump")
end
lib.moveAround(...)
return lib
testt.la
local move = require("movee")
期望的结果是不要在调用 require 时调用 lib.moveAround 或打印文件名。
点赞
用户734069
你的期望是不正确的。Lua,以及大多数脚本语言都不认可在引入模块和_执行_提供该模块的Lua文件之间存在太大的区别。每个function语句都是一个语句,其执行会创建一个函数对象。在执行这些语句之前,这些函数是不存在的。对于你的local lib = {}也是一样。等等。
现在,如果你想在用户试图把你的脚本作为模块引入和用户试图通过命令行(或仅仅是loadfile之类的)来执行你的脚本之间做区分,那么我建议你做以下事情。
检查脚本所给出的参数数量。如果没有给出任何参数,那么你的脚本可能是通过require引入的,所以当用户require你的脚本时不要做你不想做的事:
local nargs = select("#", ...)
if(nargs > 0) then
lib.moveAround(...)
end
2019-07-25 18:29:02
用户1131719
通过替换解决:
lib.moveAround(...)
用以下代码替换:
local argument = {...}
if argument[1] ~= "movee" and argument[2] ~= "movee" then
lib.moveAround(...)
end
2019-07-26 16:49:06
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

使用 require("movee")将会执行movee.lua中的代码
是该代码的一部分。因此,如果你需要 "movee",你将调用
lib.moveAround如果预期的结果不是调用它,则从代码中删除该行或不要求该文件。