在当前模块中使用另一个模块中的变量。

这是我的代码:

ModuleName.FunctionName.VariableName

我想知道这是否适用,我们都知道要加载另一个模块中的函数,必须使用以下代码:

ModuleName.FunctionName

我想知道是否可以使用我提供的代码。

点赞
用户1009479
用户1009479

你可以在另一个模块中使用变量,但语法不像 ModuleName.FunctionName.VariableName 那样,因为函数没有字段。

举个例子,考虑这个简单的模块 foo.lua:

local M = {}

function M.func()
    print("calling func")
end

M.var = 42

return M

注意,与 func() 类似,变量 var 必须是全局的,否则它是模块私有的。

你可以类似于使用函数 func() 那样使用变量 var:

local foo = require "foo"

foo.func()

print(foo.var)

输出:

calling func
42
2014-04-01 07:18:51
用户1850358
用户1850358

有两种方法可以实现这个。

1 :

-- message.lua
local M = {}
function M.message()
    print("Hello")
end
return M

你可以将上述模块调用到其他文件中。

-- test.lua
local msg = require "message"
msg.message()

2 :

--message.lua
msg = "message"

你可以通过 dofile 调用上述模块

-- test.lua
dofile ("/home/django/lua/message.lua")    -- 你应该提供完整的 message.lua 文件路径
print(msg)
2014-04-01 09:02:00
用户869951
用户869951

函数没有字段,但是表有。所以您可以做如下操作:

ModuleName.FunctionName  -- ModuleName 中的函数
ModuleName.VariableName  -- ModuleName 中的变量
ModuleName.TableName.FieldName -- ModuleName 中 TableName 表中的一个字段

请注意,FieldName 本身可以引用一个表格,而 VariableName 可以是函数、表、字符串、数字、协程等。

2014-04-01 12:31:58