Lua 尝试调用 nil。
2014-7-10 17:0:48
收藏:0
阅读:167
评论:2
我有这样一个 Lua 脚本:
function dispTanks()
mon.setCursorPos(offsetPos, 1)
mon2.setCursorPos(offsetPos, 1)
for i=1, #machines do -- RC 坦克
--------------------------------------------
if string.find(machines[i], "rcirontankvalvetile")
or
string.find(machines[i], "rcsteeltankvalvetile") then
if peripheral.isPresent(machines[i]) then
periph = peripheral.wrap(machines[i])
fluidRaw, fluidName, fluidAmount, fluidCapacity, fluidID = marik.getTank(periph)
if fluidName == nil then
-- 不显示空坦克
elseif fluidName ~= nil then
mon2.setTextColor(tc)
x, y = mon2.getCursorPos()
mon2.setCursorPos(offsetPos, (y+1))
mon2.clearLine()
-- marik.cString(offsetPos,(y+1), tc, right, " ")
nameFL = split(marik.comma(fluidName), " ")
nameFL = nameFL[0]
mon2.write("Tank (" .. nameFL .. ") : " .. marik.getBuckets(fluidAmount) .. " buckets")
end
end
end
end
end
现在在这一行报错:
nameFL = split(marik.comma(fluidName), " ")
错误是:attempt to call nil。
现在,我是 Lua 初学者,这不是我的脚本,而是一个可自由使用的脚本,我不知道如何修复它。
编辑
因此,在我添加 split 部分之前,该脚本的结果应该是:

问题是我想将名称(ardite.molten)更改为 Ardite 并且一位朋友说我需要使用 split,所以我添加了以下内容:
function firstToUpper(str)
return (str:gsub("^%l", string.upper))
end
和
nameFL = split(fluidName, " ")
nameFL = nameFL[0]
并将 mon2.write("Tank (" .. marik.comma(fluidName) .. ") : " .. marik.comma(fluidAmount) .. " / " .. marik.comma(fluidCapacity) .. " mb (" .. marik.getBuckets(fluidAmount) .. " buckets)") 更改为 mon2.write("Tank (" .. nameFL .. ") : " .. marik.getBuckets(fluidAmount) .. " buckets"),这给我带来了错误:
点赞
用户2424975
我不认为 lua 有内置的 split 函数,需要自己定义。既然你说这个脚本来自外部源,他们可能在别处定义了它。
尝试阅读这个页面以获取一些想法:http://lua-users.org/wiki/SplitJoin
如果确实定义了 split 函数,则唯一的其他可能性是 comma 函数未定义,在这种情况下,你需要在 marik 内部定义它。
2014-07-10 11:50:51
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
无论是
split函数不存在还是marik的comma函数不存在。编辑:
我想您要做的是获取点之前的所有内容,而不是完整的名称,对吗?
如果是这样,您可以这样做:
将这些行替换为:
nameFL = split(marik.comma(fluidName), " ") nameFL = nameFL[0]使用以下内容替换:
nameFL = marik.comma(fluidName):match("[^.]*")你不需要用
split。这个函数是模式匹配,在这种情况下,它匹配到第一个点之前的所有内容。