指定Lua参数应该是复制还是引用。
2011-5-21 1:35:17
收藏:0
阅读:100
评论:3
我想知道是否有一种方法可以指定 Lua 函数的参数是应该复制还是引用。颜色是表示颜色的对象。
例如,使用以下代码:
function editColor(col)
col.r = 0
print(tostring(col.r))
end
color = Color(255, 0, 0)
print(tostring(color.r))
editColor(color)
print(tostring(color.r))
会输出:
255
0
0
所以 col 是对颜色的“引用”,但这段代码:
function editColor(col)
col = Color(0, 0, 0)
print(tostring(col.r))
end
color = Color(255, 0, 0)
print(tostring(color.r))
editColor(color)
print(tostring(color.r))
会输出:
255
0
255
这里颜色被复制了。
是否有一种方法可以强制复制或引用参数?就像 C++ 中的 &
运算符一样?
原文链接 https://stackoverflow.com/questions/6078512
点赞
stackoverflow用户5386097
这将实现你想要的功能。将要传递的变量放入一个表中以按引用传递。你可以使用表来按引用传递任何东西,不仅仅是字符串。
-- 你想要通过引用传递字符串到的函数。
local function next_level( w )
w.xml = w.xml .. '<next\>'
end
-- 一些顶级函数,你想要用来累积文本。
function top_level()
local w = {xml = '<top>'} -- 这将创建一个具有一个名为"xml"的条目的表。
-- 你可以使用任何你想要的名称来调用这个条目,只要
-- 在其他函数中保持一致即可。
next_level(w)
w.xml = w.xml .. '</top>'
return w.xml
end
--输出: <top><next\></top>
2018-05-10 17:00:14
stackoverflow用户1429446
Lua 是一种糟糕的语言。当你需要做一些稍微复杂的事情时,就会遭受它的简单。
2018-11-23 16:17:27
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在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 模式将字符串(嵌套数组)转换为真正的数组?
不,Lua 中的参数始终按值传递 (链接,镜像)。然而,所有变量都是_引用_。在您的第二个示例中,在 editColor 中,您正在覆盖变量 col 引用的内容,但这仅适用于该范围。您需要改变一些东西,也许不是传递要重新赋值的变量,而是使函数返回某些内容,并在外部进行重新赋值。祝好运。