2017-05-26 53 views
1

我这里有一个Lua脚本的一部分:LUA变量类型无

local cmp = require("component") 
local r = cmp.br_reactor 
local e = require("event") 
local unicode = require ("unicode") 
local exit = false 

local buffersize = 10000000 

local last_tick_percent = 1 

print(type(last_tick_percent)) 

function stored_energy() 
    local rf_stored = r.getEnergyStored() 
    local rf_percent = (rf_stored/buffersize)*100 
    print(type(rf_precent)) 
    print(type(last_tick_percent)) 
    local delta_percent = rf_percent - last_tick_percent 
    last_tick_percent = re_percent 
    return rf_percent.."% ["..rf_stored.."] | "..unicode.char(916)..": "..delta_percent.."%" 
end 

第一印刷甚至不是出于某种原因执行。在该功能中,第一次打印返回Number,而第二次打印返回nil

现在我得到错误attempt to perform arithmetic on upvalue "last_tick_percent" (a nil value),显然是因为last_tick_percentnilprint(type(..))显示。

但我刚刚分配它字面上5行以上。

所以问题是:

  1. 为什么last_tick_percent零,我怎样才能解决呢?
  2. 为什么第一次打印没有执行?

回答

1

要指定这是不是在你的脚本声明last_tick_percentstored_energyre_percent。我假设你打算分配rf_percent

+0

非常感谢。它总是最明显的东西:) – user5236815

+2

在print()调用中还有一个对'rf_precent'的引用。使用语法着色编辑器可以帮助避免这类错误,如果它知道范围并且可以对变量着色不同。 [ZeroBrane Studio](https://studio.zerobrane.com/)做得很好,还有其他的。 [lua-users wiki也有关于此主题的网页](http://lua-users.org/wiki/DetectingUndefinedVariables)。 – RBerteig