lua: 本地字符串的本地函数调用 -> 空值

我有这个代码,在其中“call_name”似乎保持为nil。

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”公开,这不是一个真正的问题,但我想知道为什么会这样。有人可以解释一下吗?

谢谢。

点赞
用户847349
用户847349

call_name 在这两种情况下都是局部变量,即:

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

2014-08-22 10:31:39