lua:本地函数调用本地字符串 - > nil

Sem*_*pie 1 null string.format lua local

我得到了这个代码,其中"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
Run Code Online (Sandbox Code Playgroud)

最后,这不是一个真正的问题,因为我可以将call_name设为public,但我想知道为什么会这样.有人可以解释一下吗?

谢谢.

Dmi*_*sov 7

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

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

test()
Run Code Online (Sandbox Code Playgroud)

nil

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

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

test()
Run Code Online (Sandbox Code Playgroud)

42