【问题标题】:lua: local functioncall with local string -> nillua: 带有本地字符串的本地函数调用 -> nil
【发布时间】:2014-08-22 10:26:56
【问题描述】:

我得到了这段代码,其中“call_name”似乎保持为零。

function mdbTest(conf)
  if conf.m_string:sub(6,9) == "MBUS" then
      local print_name, call_name = "MBUS","mbus"
  else
      local print_name, call_name = "MDB","mdb"
  end

  local port_handler = rawio.open(string.format("/dev/%s",call_name))
end

最后,这不是一个真正的问题,因为我可以将 call_name 公开,但我想知道为什么会这样。谁能解释一下?

谢谢。

【问题讨论】:

    标签: lua local null string.format


    【解决方案1】:

    call_name 在这两种情况下都位于 if/else 块的本地,即:

    function test()
        if true then
            local a = 42
        end
        print(a)
    end
    
    test()
    

    nil

    修复:在其使用范围内声明

    function test()
        local a
        if true then
            a = 42
        end
        print(a)
    end
    
    test()
    

    42

    【讨论】:

      猜你喜欢
      • 2010-12-19
      • 2021-06-10
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 2011-01-14
      • 2018-09-20
      相关资源
      最近更新 更多