Corona SDK: 将值从main.lua传递到外部模块

这是一个我修改过的演示例子,已经移除了 module(..., package.seeall) 语句。它运行良好,我想在一个 Corona sdk 项目中使用相同的思路。我想把一个值传递给我在演示中创建的现有变量。感谢任何建议。

main.lua--------------------------------------------------

-- 加载外部库(应该与 main.lua 文件在同一个文件夹中)
local testlib = require("testlib")
testlib.testvar = 100 -- 尝试改变外部模块中的 testvar 值

-- 缓存相同的函数,如果你调用多次
local hello = testlib.hello

-- 现在所有未来的调用都是“快速的”
hello()

-- 这一切都很好,但我需要改变 testvar 的值。

testlib.lua -----------------------------------------------------

local M = {}
local testvar = 0 -- 我需要改变这个变量的值以及以后的其他变量。
print("testvar=",testvar)

local function hello()
    print ("Hello, module")
end
M.hello = hello

return M
点赞
用户1150918
用户1150918

在这种情况下,local testvar 是您模块(testlib.lua)的私有变量。

您需要为该私有变量提供一些setter/getter。

基本示例是将以下内容添加到您的testlib.lua文件中:

function setter(new_val)
    test_var = new_val
end

function getter()
    return test_var
end

M.set = setter
M.get = getter

现在,您可以在main.lua中使用testlib.set("some new value..")print(testlib.get())来操作testvar变量的值。

2013-09-18 23:11:34