【问题标题】:How I can set global variable inside function lua如何在函数 lua 中设置全局变量
【发布时间】:2014-04-01 03:44:37
【问题描述】:
webView = nil
func()
function func()
              webView = native.newWebView( 0, 0, display.contentWidth, display.contentHeight )
              webView:request( "https://api.twitter.com/oauth/authenticate?oauth_token="..twitter_request_token )
              webView:addEventListener( "urlRequest", webListener )

end
print(webView) -- webView = nil

我如何在func 之外获得webView,我在func 内部进行了更改。请帮帮忙

【问题讨论】:

  • 不要用nil 初始化webView。请改用webView = true0false""
  • 仅供参考-所有 Lua 代码都编译为函数。因此,代码设置的所有全局变量都设置在一个函数内部。

标签: iphone lua coronasdk


【解决方案1】:

您的示例(几乎)没有任何问题。您需要确保在定义它之后调用func(),但除此之外它应该可以工作。例如,这会为我输出something

webView = nil
function func()
  webView = "something"
end
func()
print(webView)

是的,您可以在函数内部使用显式引用 _G.webView,但您无需这样做。

如果您仍然有问题,可能是因为您的func() 没有在您认为的时候执行。在函数内部分配webView的值后尝试print

【讨论】:

    【解决方案2】:

    您只需在变量前面附加 _G 即可作为全局变量。

    你必须在任何地方使用你的变量和 _G。

    例如:

    _G.yourVaribalename=display.newText();
    

    【讨论】:

      【解决方案3】:

      您不需要声明变量,除非指定为局部变量,否则它们会自动成为全局变量。而且你不能在定义 func 之前调用func()。所以试试这个:

      function func()
          webView = native.newWebView( 0, 0, display.contentWidth, display.contentHeight )
          webView:request( "https://api.twitter.com/oauth/authenticate?oauth_token="..twitter_request_token )
          webView:addEventListener( "urlRequest", webListener )
      end
      func()
      print(webView) -- webView will not be nil
      

      在上面,webView 是全局的,所以它在func() 中创建后就会全局存在,在func() 返回后会继续存在。

      【讨论】:

        猜你喜欢
        • 2012-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-20
        • 1970-01-01
        • 1970-01-01
        • 2014-01-31
        • 2020-07-06
        相关资源
        最近更新 更多