Lua(要求)调用所需文件名的非预期打印
Lua (require) invoke an not intended print of required file name
当在两个文件之一的 testt.lua 中调用 require 时,return 被移动并且 movee.lua.
movee 大部分是需要的 class,但应该可以接受直接带参数调用。
movee.lua
local lib = {} --this is class array
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 或打印文件名。
require("movee")
将在movee.lua
内执行代码
lib.moveAround(...)
是该代码的一部分。因此,如果您需要 "movee",您可以调用 lib.moveAround
如果预期结果不是调用它,请从您的代码中删除该行或不需要该文件。
您的期望不正确。 Lua,以及与此相关的大多数脚本语言,在包含模块和执行 提供该模块的 Lua 文件之间并没有太大的区别。每个 function
语句都是一个语句,其执行会创建一个函数对象。在执行这些语句之前,这些函数不存在。您的 local lib = {}
也是如此。等等。
现在,如果您想区分用户何时尝试 require
您的脚本作为模块和用户何时尝试在命令行上执行您的脚本(或仅通过 loadfile
或类似的),那么我建议执行以下操作。
检查为脚本提供的参数数量。如果没有给出参数,那么你的脚本可能是 require
d,所以当用户 require
s 你的脚本时,不要做你不想做的事情:
local nargs = select("#", ...)
if(nargs > 0) then
lib.moveAround(...)
end
通过替换
解决
lib.moveAround(...)
和
local argument = {...}
if argument[1] ~= "movee" and argument[2] ~= "movee" then
lib.moveAround(...)
end
当在两个文件之一的 testt.lua 中调用 require 时,return 被移动并且 movee.lua.
movee 大部分是需要的 class,但应该可以接受直接带参数调用。
movee.lua
local lib = {} --this is class array
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 或打印文件名。
require("movee")
将在movee.lua
内执行代码lib.moveAround(...)
是该代码的一部分。因此,如果您需要 "movee",您可以调用 lib.moveAround
如果预期结果不是调用它,请从您的代码中删除该行或不需要该文件。
您的期望不正确。 Lua,以及与此相关的大多数脚本语言,在包含模块和执行 提供该模块的 Lua 文件之间并没有太大的区别。每个 function
语句都是一个语句,其执行会创建一个函数对象。在执行这些语句之前,这些函数不存在。您的 local lib = {}
也是如此。等等。
现在,如果您想区分用户何时尝试 require
您的脚本作为模块和用户何时尝试在命令行上执行您的脚本(或仅通过 loadfile
或类似的),那么我建议执行以下操作。
检查为脚本提供的参数数量。如果没有给出参数,那么你的脚本可能是 require
d,所以当用户 require
s 你的脚本时,不要做你不想做的事情:
local nargs = select("#", ...)
if(nargs > 0) then
lib.moveAround(...)
end
通过替换
解决lib.moveAround(...)
和
local argument = {...}
if argument[1] ~= "movee" and argument[2] ~= "movee" then
lib.moveAround(...)
end