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

如何在 a.luab.lua 之间传递一个值?

假设在我的 a.lua 文件中有这个变量的代码:

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

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

提前感谢...

原文链接 https://stackoverflow.com/questions/10593464

点赞
stackoverflow用户339852
stackoverflow用户339852

将值分配给全局表(_G),就像这样:

_G.value = "Hello WOrld"

在另一个脚本中,你可以这样做:

value = _G.value
2012-05-15 02:34:01
stackoverflow用户108741
stackoverflow用户108741

当你声明某个变量为局部变量时,你明确告诉 Lua 不要在脚本之间共享它。而是应该创建一个非局部变量:

value = "Hello World"

在 b.lua 文件中,只需简单地引入 a.lua 文件并使用它,例如在 b.lua 文件中:

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

您将获得以下输出:

"Hello World"
2012-05-15 02:35:20
stackoverflow用户1208078
stackoverflow用户1208078

比简单地将东西塞到全局表里,更好的方法是使用 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())  -- 输出 'My value in file a'
print(a.SomeVal)         -- 输出 15
print(SomeVal)           -- 输出 nil,除非你在 b.lua 中声明了它

这比仅仅将东西塞进 _G 表里要清洁得多。如果你有三四个不同的脚本,尝试存储应该具有相同名称但在不同上下文中的值,会发生什么呢?能够像这样说:

a.Value
a.Function()

不仅更清晰地表明了你从哪里获取数据,而且比说

_G["Value"]

并希望那实际上就是你想要的值要干净得多。使用 _G 可能在你只有两个文件的简单情况下更容易。但早日学习最佳实践并使用它们会更好。如果你有多个文件协同工作,使用 _G 将是一场噩梦...

2012-05-15 15:00:31
stackoverflow用户785576
stackoverflow用户785576

使用 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
2012-08-24 15:48:18