LUA调用LUA的问题

123 views
Skip to first unread message

Tien

unread,
Mar 4, 2010, 8:33:29 AM3/4/10
to Lua中国用户组
有一段代码如下:

main.lua:

start = false
menu = true

function love.draw()
if menu then
dofile("sample\\test1.lua")
else if start then
dofile( "sample\\test2.lua" )
end
end
end


test1.lua

b = 1 + 1

1.怎么获得test1.lua执行的结果呢?比如说b的结果。
2.这样直接调用的话,假如这段代码中有全局变量a,test1.lua中也有全局变量a,后者会把前者给替换掉吗?

先谢谢了。

Chunlin Zhang

unread,
Mar 4, 2010, 9:00:53 AM3/4/10
to lua...@googlegroups.com
1.
-----test1.lua 文件内容

b = 1 + 1
return b

这样 dofile("test1.lua") 返回的就是 b

2. 这个问题直接试一下就知道了,我试的结果是会.


2010/3/4 Tien <swdgam...@gmail.com>:

Tien

unread,
Mar 4, 2010, 9:20:27 AM3/4/10
to Lua中国用户组
那假如我是要调用test1.lua里面的function x怎么办?

Chunlin Zhang

unread,
Mar 4, 2010, 9:28:08 AM3/4/10
to lua...@googlegroups.com
那就把 test1.lua 搞成一个模块算了...

2010/3/4 Tien <swdgam...@gmail.com>:
> 那假如我是要调用test1.lua里面的function x怎么办?
>
> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的“Lua中国用户组”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 lua...@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 lua_cn+un...@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/lua_cn?hl=zh-CN 访问此网上论坛。
>
>

Tien

unread,
Mar 4, 2010, 9:31:02 AM3/4/10
to Lua中国用户组
这样啊。那我先去研究研究。谢谢ls了。我能找到的资料实在是不够啊。

On Mar 4, 10:28 pm, Chunlin Zhang <zhangchun...@gmail.com> wrote:
> 那就把 test1.lua 搞成一个模块算了...
>

> 2010/3/4 Tien <swdgame.t...@gmail.com>:


>
>
>
> > 那假如我是要调用test1.lua里面的function x怎么办?
>
> > --
> > 您收到此邮件是因为您订阅了 Google 网上论坛的"Lua中国用户组"论坛。
> > 要向此网上论坛发帖,请发送电子邮件至 lua...@googlegroups.com
> > 要取消订阅此网上论坛,请发送电子邮件至 lua_cn+un...@googlegroups.com

> > 若有更多问题,请通过http://groups.google.com/group/lua_cn?hl=zh-CN访问此网上论坛。- Hide quoted text -
>
> - Show quoted text -

Chunlin Zhang

unread,
Mar 4, 2010, 9:36:28 AM3/4/10
to lua...@googlegroups.com
或者你可以给 test1.lua 传参数

f = loadfile("test1.lua")
f("haha")

然后 test1.lua 根据传进的参数 ... 来做处理,这样也许也能达到你的目的.

2010/3/4 Tien <swdgam...@gmail.com>:

John

unread,
Mar 4, 2010, 10:34:47 PM3/4/10
to Lua中国用户组
dofile把一个文件当作lua chunk来处理,而chunk又是被当作function来处理的。

ziggear c

unread,
Jul 20, 2013, 3:56:36 AM7/20/13
to lua...@googlegroups.com
赞同Chunlin Zhang的回答

1.怎么获得test1.lua执行的结果呢?比如说b的结果。
======================================
最好的做法是把test1.lua 和test2.lua 模块化

test1.lua:
test1 = {}
local function test1.func1 ()
...
end

local function test1.func2 ()
...
end

local test1.var1 = 'xxx'
local test1.var2 = 'yyy'

return test1

main.lua:
local test1 = require('test1')
result = test1.func1()
...


2.这样直接调用的话,假如这段代码中有全局变量a,test1.lua中也有全局变量a,后者会把前者给替换掉吗?
=============================================================================
只要lua虚拟机没有关闭 ——对应C代码中没有执行 lua_close(lua_State*) ,或者对应命令行下没有退出lua,那么相同的全局变量是共享的。
这样的问题楼主自己多多尝试和理解就好啦~~ 


在 2010年3月4日星期四UTC+8下午9时33分29秒,Tien写道:
Reply all
Reply to author
Forward
0 new messages