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

如何将Lua中的值传递和接收到另一个Lua?,lua,coronasdk,Lua,Coronasdk,如何将值从a.lua传递到b.lua 让我们假设在我的a.lua中有这个变量代码 local value = "Hello WOrld!" director:changeScene ("b") 我的问题是如何将值从a.lua传递到b.lua 提前感谢….将值分配给全局表(\u G),如下所示: _G.value = "Hello WOrld" 在另一个脚本中,您可以执行以下操作: value = _G.value 当您声明本地内容时,您明确告诉Lua不要在脚本之间共享它。只需创建一个非局部

如何将值从
a.lua
传递到
b.lua

让我们假设在我的
a.lua
中有这个变量代码

local value = "Hello WOrld!"
director:changeScene ("b")
我的问题是如何将
a.lua
传递到
b.lua


提前感谢….

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

_G.value = "Hello WOrld"
在另一个脚本中,您可以执行以下操作:

value = _G.value

当您声明本地内容时,您明确告诉Lua不要在脚本之间共享它。只需创建一个非局部变量即可:

value = "Hello World"
在b.lua文件中,只需要a.lua文件并使用它,例如在b.lua文件中

local a_File  = require "a"
print(a_File.value)
您将得到如下输出:

"Hello World"

比把东西塞进全局表更好的方法是按照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
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
b、 lua代码:

module("a", package.seeall)

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

function GetSomeValue()
    return myVal
end
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
这比把东西塞进桌子要干净得多。如果您有3个或4个不同的脚本,并且您试图在不同的上下文中存储名称相同的值,会发生什么情况?能够说:

a.Value
a.Function()
它不仅更清楚地知道您从何处获取数据,而且比说清楚得多

_G["Value"] 

希望这就是你所希望的价值。如果您只处理一个只有两个文件的简单案例,那么使用_G可能会更容易。但最好是学习最佳实践并尽早使用。如果有多个文件协同工作,那么使用_G将是一场噩梦。

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

下面的代码很有用

来自a.lua文件

data="hellow"
director:changeScene({data},"levelroom")
module(...,package.seeall)
new=function(params)
   localGroup=display.newGroup()
   data=params.data
   print(data)         --output:hellow
   return localGroup 
end
来自b.lua文件

data="hellow"
director:changeScene({data},"levelroom")
module(...,package.seeall)
new=function(params)
   localGroup=display.newGroup()
   data=params.data
   print(data)         --output:hellow
   return localGroup 
end

value=\u G.value
如果前面没有其他内容,则不会执行任何操作。答案中的
\u G
在第一行完全是多余的,第二行很奇怪:
值和
\u G.value
是一回事,所以你写的是
值=值
\u G.value=\u G.value
\u G[“value”]=“value”
。说实话,我已经有一段时间没碰Lua了,这个答案是快速谷歌搜索的结果+1到更正确的答案。这不起作用。您需要在SomeVal之前删除
local
,以便将其打印出来。否则它会打印出
nil
。它工作了,我使用Lua5.1对它进行了测试,然后把文件完全复制到
a.lua
b.lua
中,然后运行
lua b.lua
我得到:
我在文件a nil
中的值(Lua5.1.3)要使它工作,你需要执行
模块('a'))
位于
a.lua
文件的顶部,或者,更好的做法是,
在末尾返回{value=“Hello World”}
,以避免使用
模块
(按原样;它在lua 5.2中被删除)。