从不同的Lua文件中调用函数

我有一个menu.lua文件

local db = require "databaseconnection"
...
local function onEndBtnRelease()
    local thisandthat = db.getLoggedIn()
    native.showAlert( "Corona SDK", thisandthat.." 测试字符串", { "OK" } )
end
...

还有一个databaseconnection.lua文件

local function getLoggedIn()
    print("测试")
    --[[...
    ]]--

    return "一些数据"
end

我只想要来自getLoggedIn()的字符串(“一些数据”),但我得到的是一个错误:

...\corona\menu.lua:51:attempt to call field 'getLoggedIn' (a nil value)

print输出永远不会被执行。 我正在使用Corona SDK和Sublime,isLoggedIn()所需的数据来自sqlite请求。如何才能访问该函数?

点赞
用户1009479
用户1009479

一种编写模块的直接方法是返回一个包括所需函数的表:

local M = {}

function M.getLoggedIn()
    print("Test")
    --...
    return "some data"
end

return M

注意,函数需要是非 local 的,否则它将是私有的。

请参阅 PiL 查看其他高级方法。

2014-03-10 15:06:33
用户3131449
用户3131449

你也可以创建一个封装类,只需在类(databaseconnection.lua)的顶部写下以下行:

module(..., package.seeall)

然后在 main.lua 中调用你的函数,它将返回你想要的相同值。

2014-03-14 08:09:59
用户2409015
用户2409015

你也可以通过以下方式获取你的数据。

menu.lua 文件中通过 require("databaseconnection") 引入并调用 get login 函数。

local abc = getLoggedIn()

print (abc)
2014-03-20 06:57:17