【问题标题】:how to pass and receive value in Lua to another Lua?如何将 Lua 中的值传递和接收到另一个 Lua?
【发布时间】:2012-05-15 02:30:34
【问题描述】:

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

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

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

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

提前谢谢....

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

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

    value = "Hello World"
    

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

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

    你会得到输出为

    "Hello World"
    

    【讨论】:

    • 为此,您需要在a.lua 文件的顶部执行module('a'),或者,最好在最后执行return {value = "Hello World"},以避免使用module(因为它是@987654321 @; 它在 Lua 5.2 中被删除)。
    【解决方案2】:

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

    _G.value = "Hello WOrld"
    

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

    value = _G.value
    

    【讨论】:

    • value = _G.value 如果前面没有其他内容,则什么也不做
    • 查看 SpliFF 的回答。您答案中的_G 在第一行中完全是多余的,而第二行则很奇怪:value_G.value相同的东西,所以您正在写value = value_G.value = _G.value_G["value"] = _G["value"]
    • 说实话,我已经有一段时间没有接触过Lua了,这个答案是快速谷歌的结果。对更正确的答案 +1。
    【解决方案3】:

    比把东西塞进全局表更好的是按照它的预期使用方式使用 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 将是一场噩梦......

    【讨论】:

    • 这不起作用。您需要在 SomeVal 之前删除 local 以使其打印 15。否则它将按应有的方式打印 nil
    • 它有效,我在放置任何东西之前使用 lua 5.1 对其进行了测试。
    • 将文件原样复制到a.luab.lua 并运行lua b.lua我得到:My value in file a nil nil (Lua 5.1.3)
    【解决方案4】:

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

    下面的代码很有用..

    来自 .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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-02
      • 2013-07-24
      • 2017-05-23
      • 2012-05-27
      • 2019-02-13
      • 1970-01-01
      • 2011-01-14
      • 2012-11-08
      相关资源
      最近更新 更多