【问题标题】:Lua Lanes: attempt to index global 'os' (a nil value)Lua Lanes: 尝试索引全局 'os' (一个 nil 值)
【发布时间】:2012-05-10 22:14:03
【问题描述】:

我想用Lua Lanes 做一个多线程并记录所用的时间。代码如下:

require "lanes"

function performTest ()
    os.execute("testJson-mt.lua")
end

for i=1,10,1 do
    f= lanes.gen(performTest)
    a=f()
    startTime = os.time()
    print("ID "..a[1].." completed.")
    endTime = os.time()
    diff = os.difftime (endTime, startTime)
    print(i..","..os.date("%x %X",startTime)..","..os.date("%x %X",endTime)..","..startTime..","..endTime..","..diff)
end

但是,当我运行代码时,控制台返回错误:lua: testLanes.lua:4: attempt to index global 'os' (a nil value)

此错误代码指向os.execute("testJson-mt.lua") 所在的行。我不太明白这个错误。请指教。

注意:我使用 Lua for Windows 作为 IDE。

【问题讨论】:

    标签: lua


    【解决方案1】:

    默认情况下,lanes.gen loads no libraries,甚至不是基础库。因此将'*' 作为第一个参数传递给lanes.gen 以获取通道中的os 和其他模块。

    【讨论】:

    • 将帮助您的答案标记为已解决会很棒;)
    • "*" 加载所有库是多余的,你可以使用“os”作为lanes.gen的第一个参数
    • 技术上你是正确的,但实际上你很快就会需要print(在base库中),一些string处理等等,所以我通常使用'*' at必要时启动并稍后调整库。
    • 我正在使用 Lua Bridge 和 Lua 通道。有没有办法将所有映射的类复制到车道中的 lua 状态。每当尝试从通道访问映射的 Lua 对象时都会出错。
    【解决方案2】:

    你也可以只做require "os"

    【讨论】:

    • 请注意,对 require 的调用必须在函数 performTest() 内,以便在每个通道而不是在基本状态中执行。
    猜你喜欢
    • 2019-03-01
    • 2019-08-21
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 2018-07-11
    • 2014-05-06
    相关资源
    最近更新 更多