我的代码有错误:它一直告诉我“尝试索引零值(全局'sides')”
我正在尝试通过 Minecraft(OpenComputers)学习 Lua,但发现自己遇到了一个零值问题。可能有些东西实际上并非来自 Lua(mod 本身),但问题涉及“纯 Lua 部分”
component = require("component")
event = require("event")
computer = require("computer")
term = require("term")
gpu = component.gpu
redstone = component.redstone
gpu.setResolution(160,50)
while true do
term.clear()
term.setCursor(1,1)
gpu.setBackground(0x5A5A5A)
gpu.set(1,1," Allumer lampe Eteindre lampe")
term.setCursor(1,2)
local _,_,x,y = event.pull("touch")
if x >= 2 and x <= 14 and y == 1 then
redstone.setOutput(sides.left,15)
elseif x >= 19 and x <= 32 and y == 1 then
redstone.setOutput(sides.left,0)
else
main()
end
end
我查看了 mod 的 Wiki,它说 redstone.setOutput(sides.left,15) 应该更改输出的实际值,但它也返回输出的 OLD 值(这就是我的位置)我认为我做错了)
最佳答案
在您的代码中,双方未定义。
正如你有这一行:
redstone.setOutput(sides.left,15)
您尝试使用索引运算符对
sides
建立索引。
由于 sides
在此范围内的 nil
值中未知,因此您无法对其建立索引。这没有道理。
使用错误消息 Lua 提示您的尝试。
要避免此错误,您必须确保不会对 nil 值建立索引,方法是不对其进行索引,或者在索引时确保它不为 nil。
Sides API 是一个可以根据需要加载的模块。 有一些代码可以在表中创建该 API。
local sides = require("sides")
将执行该代码并将对新创建的 API 表的引用存储在本地变量 sides
中。
这样做之后,索引 sides
是合法的,因为 sides
不再是 nil
,而是一个表格。
sides.left
将引用存储在表 sides
中的键 "left"
关于lua - 如何修复 "attempt to index a nil value",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57207287/