【问题标题】:forwarding a lua code to another将lua代码转发给另一个
【发布时间】:2018-01-22 10:57:38
【问题描述】:

我有一个 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)

输出:

【问题讨论】:

    标签: lua


    【解决方案1】:
    function main_setup()
       package.path = package.path ..";C:/Users/kude/Desktop/mqtt1/?.lua"              
       require "ds18b20"
    end
    

    这个函数不返回任何东西。

    所以

    local a = main_setup()
    

    等价于

    local a = nil
    

    因此

    是预期的输出

    print(a)
    

    【讨论】:

      【解决方案2】:

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

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

      如果您正在加载的文件returns 是一个值(或将其分配给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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-24
        • 2021-06-03
        • 2017-05-20
        • 2019-07-25
        • 2023-03-16
        • 2021-03-03
        相关资源
        最近更新 更多