将 Lua 代码转发到另一个文件

我有一份 Lua 代码,我从另一个 Lua 文件中调用它并想要赋值和打印出这个值,但我得到了"nil",能否请您帮帮我。 以下是代码:

function main_setup()

  package.path = package.path ..";C:/Users/kude/Desktop/mqtt1/?.lua"

  require "ds18b20"

end

local a = main_setup()

print(a)

output:

nil

点赞
用户2858170
用户2858170
函数 `main_setup()` 不返回任何东西。

因此,

local a = main_setup()


等价于

local a = nil


故

> nil

print(a)


的预期输出。
2017-08-14 15:49:55
用户805875
用户805875

函数不会隐式地返回最后一个语句的结果。如果没有显示的 return,Lua 会隐式地返回 nil - 这意味着你的代码本质上是这样的:

function main_setup()
   package.path = package.path ..";C:/Users/kude/Desktop/mqtt1/?.lua"
   require "ds18b20"
   return nil
end

如果你加载的文件 return 了一个值(或者将它分配给了 package.loaded),那么 require 就会返回那个值。为了让它进一步传递,可以在 require 前加上 return

function main_setup()
   package.path = package.path ..";C:/Users/kude/Desktop/mqtt1/?.lua"
   return require "ds18b20"
end
local a = main_setup()
print(a)
2017-08-14 16:41:39