无法在函数外部打印函数参数,即使返回
2022-2-9 16:46:15
收藏:0
阅读:155
评论:3
contents
是作为函数 func
的参数传递的表格。问题是,我无法打印出表格 contents
中的任何值。例如,在这里,您可以看到我试图打印表格 contents
中的第二个值,但是我得到了这个错误 12: attempt to index global 'contents' (a nil value)
function func(contents)
print(contents[1])
return contents
end
func({"content1", "content2", "content3"})
print(contents[2])
原文链接 https://stackoverflow.com/questions/69878229
点赞
stackoverflow用户2858170
如何使内容全局化
函数参数 contents
局部于 func
函数且会隐藏同名变量在更大范围的作用域中。
全局变量名只是指向表 _G
中的字段。
所以在你的函数中你可以这样做:
_G.contents = contents
但通常你会尽量避免使用全局变量。
由于 func
返回 contents
,所以可以这样做:
print(func({"content1", "content2", "content3"})[2])
2021-11-08 07:39:56
stackoverflow用户369792
如果您的功能将始终使用全局变量,请创建全局变量,不要将其作为函数的参数:
contents = {"content1", "content2", "content3"}
function func()
print(contents[1])
print(#contents)
return contents
end
func()
print(contents[2])
如果您确实希望具有全局变量,则建议重命名您的参数以避免混淆。由于这似乎只是一个样例,而且您的表似乎包含字符串,因此我将参数重命名为“strings”,并展示了您可以使用返回值或全局变量(repl.it):
contents = {"content1", "content2", "content3"}
function func(strings)
print(strings[1])
print(#strings)
return strings
end
local result = func(contents)
print(contents[2])
print(result[2])
使用全局变量是不被赞同的,您可以将其放在模块中,并在其前面加上“local”以在模块的任何地方使用它:
local contents = {"content1", "content2", "content3"}
2021-11-08 16:28:26
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在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中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
之所以会出错是因为你把
print(contents[2])
写在了函数外面。contents
只存在于函数内部。根据程序的其他部分,contents
并不存在,因此会抛出错误。没有全局变量contents
,错误提示说的是12:
,说明错误出现在第12行,而第12行正好是print(contents[2])
。