如何在Lua中传递和接收另一个Lua的值?

时间:2012-05-15 02:30:35

标签: lua corona

如何将a.lua的值传递给b.lua

让我们说在a.lua我有这个变量代码。

local value = "Hello WOrld!"
director:changeScene ("b")

我的问题是如何将valuea.lua传递到b.lua

提前感谢....

4 个答案:

答案 0 :(得分:9)

当你声明一些本地的东西时,你明确告诉Lua不要在脚本之间共享它。只需创建一个非局部变量:

value = "Hello World"

在b.lua文件中只需要a.lua文件并使用它,例如在b.lua文件中

local a_File  = require "a"
print(a_File.value)

您将获得输出

"Hello World"

答案 1 :(得分:5)

将值分配给全局表(_G),如下所示:

_G.value = "Hello WOrld"

在另一个脚本中,您可以执行此操作:

value = _G.value

答案 2 :(得分:2)

比仅仅填充全局表更好的方法是按照预期的方式使用lua的模块系统。

说你有两个文件,a.lua和b.lua。 b.lua需要来自a.lua的一些价值。这就是你如何做到这一点:

a.lua代码:

module("a", package.seeall)

local myVal = "My value in file a"
local SomeVal = 15

function GetSomeValue()
    return myVal
end

b.lua代码:

require "a"
print(a.GetSomeValue())  -- prints 'My value in file a'
print(a.SomeVal)         -- prints 15
print(SomeVal)           -- prints nil, unless you've declared it in b.lua

这比仅仅填充_G表中的东西要简洁得多。如果您有3个或4个不同的脚本,并且您尝试存储应该命名相同的值,只是在不同的上下文中会发生什么?能够说:

a.Value
a.Function()

不仅更清楚你在哪里获取数据,而且比说

更清晰
_G["Value"] 

并希望这实际上是您希望的价值。如果你只使用两个文件来处理一个简单的情况,那么使用_G可能会更容易。但最好是学习最佳实践并尽早使用它们。如果你有几个文件合作一起工作,使用_G将是一场噩梦......

答案 3 :(得分:1)

使用director API我们将一个值转移到另一个lua文件很容易。它以表或数组类型发送数据

下面的代码很有用..

来自a.lua文件的

data="hellow"
director:changeScene({data},"levelroom")
来自b.lua文件的

module(...,package.seeall)
new=function(params)
   localGroup=display.newGroup()
   data=params.data
   print(data)         --output:hellow
   return localGroup 
end