尝试对空值 ? 进行索引。

我和我的朋友正在尝试编写一个使用Lua作为编程语言的ComputerCraft(Minecraft Mod)程序。我以前没有使用过Lua,他也只是玩了一下。基本上,我们想用m.clear()清除一行文本,但我认为它可能不知道什么是m,尽管我尝试定义它。

如果这个问题表述不清,那就把代码贴出来:

m = peripheral.wrap("right")
m.write("Shutting down.")
m.clear()
sleep(.1)
m.setcursorpos(1,1)
print("Shutting Down..")

我不会贴出其他代码,因为程序的作用是在每个句号后添加一个.,但这并不是重点。 :)

备注: 我实际上不知道peripheral.wrap("right")是什么意思,它是从ComputerCraft论坛上另一个人的代码中借来的(他也想清除屏幕)。

点赞
用户2360894
用户2360894

提示: 代替使用 m.clear(),你应该使用 term.clear()。

2013-05-08 05:04:29
用户2369088
用户2369088

这是在显示器上吗?

如果是的话,那么显示器必须位于电脑的右边。m.clear() 实际上可以理解为 peripheral.wrap("right").clear(),它将访问右侧的显示器并使用命令 clear()

如果您正在尝试在电脑上清除这个,则可以简单地使用 term.clear()

2013-05-10 07:34:51
用户3179794
用户3179794

我认为第一行应该是 "local m =..." 另外,peripheral.wrap("right") 的意思是将位于计算机右侧的调制解调器、打印机等设备变得可用,通过向那里发送任何命令,而不是试图在计算机上运行它。

2014-01-09 23:35:24
用户3189167
用户3189167

尝试先检查它是否为nil

if m ~= nil then
  m.clear()
else
 print("无法连接")
end
2014-01-14 05:52:52
用户3636309
用户3636309

尝试使用 term.clear() 替代 m.clear()

2014-05-14 10:55:43
用户2000028
用户2000028

函数peripheral.wrap(string side)返回一个包含指定计算机侧面上外部设备一些函数的表格(如果没有找到则返回nil)。

你之所以出现了错误是因为你试图访问一个nil变量(nil代表“没有任何东西”)。

调用以下代码将把“Hello, World”打印到监视器前面(这里是指外部监视器,而非计算机本身的屏幕):

monitor = peripheral.wrap("top")
monitor.print("Hello, World")

同样,你可以通过以下代码把“Hello, World”打印到你的终端(计算机界面,你不需要对其进行包装):

term.print("Hello, World")

如果你只想与计算机界面交互(而不是外部监视器),你需要使用表格term,而非peripheral.wrap()

term.write("Shutting down.")
term.clear()
sleep(.1)
term.setCursorPos(1,1) --这里应该用的是setCursorPos而非setcursorpos!!!
print("Shutting Down..")
2014-06-01 19:14:24