Computercraft Lua将nil改为0

时间:2014-09-04 23:28:29

标签: lua computercraft

我正在使用Computercraft,一个Minecraft mod,我需要帮助。我试图找到一种类型的所有外围设备,从它们获取能量,并将它们加在一起。但是,我得到了一个"尝试在nill"或者是一些错误。这是我的代码:

local periList = peripheral.getNames()
energy = 0
totalenergy = 0

for i = 1, #periList do
  if peripheral.getType(periList[i]) == "cofh_thermalexpansion_energycell" then
    local cell = peripheral.wrap(periList[i])
    print(periList[i])
    if cell.getEnergyStored("potato") ~= "nil" then
      energy = cell.getEnergyStored("potato")
      print(cell.getEnergyStored("potato"))
    else
      energy = 0
      print(0)
    end
    totalenergy = totalenergy + energy
  end
end
print(totalenergy)

抱歉,codebox没有用

无论如何,有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

nil"nil"是两回事。

前者是nil类型“singleton”,后者是由三个字符组成的字符串。它们并不等同。

尝试删除if行中的引号。

此外,您可以将(潜在的)nil分配给energy然后直接energy并将其设置为0(如果它是nil(或者甚至只是使用

energy = cell.getEnergyStored("potato") or 0

直接由于nil是“false-y”值,因此nil or 0评估为0)。