如何将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中被删除)。