在函数参数中作为多个结果的一部分。
2020-6-20 9:12:55
收藏:0
阅读:76
评论:2
假设我有以下三个函数:
function getVector2D()
return 66.0, 77.0
end
function setVector2D(x, y)
print(x.." "..y)
end
function setVector3D(x, y, z)
print(x.." "..y.." "..z)
end
如果我使用 setVector2D(getVector2D()),我没有任何问题,因为多个返回值从 getVector2D 将应用于 setVector2D,结果将是 66.0 77.0。
但如果我想部分应用参数,例如 setVector3D(getVector2D(), 88.0)?
期望的(和获得的)结果将只是从 getVector2D 中计算出 x,就像手册所说:
print(foo2(), 1) --> a 1
print(foo2() .. "x") --> ax (see below)当
foo2函数出现在一个表达式中时,Lua 会调整返回值的数量;所以,在最后一行中,只有 "a" 在串联中使用。
问题是:有没有方法可以以一种简洁的方式从上面的调用中获得 getVector2D 的多个值,并期望结果为 66.0 77.0 88.0?
点赞
用户1208078
你可以使用临时表来保存参数并追加额外的参数?
function getVector2D()
return 66.0, 77.0
end
function setVector2D(x, y)
print(x,y)
end
function setVector3D(x, y, z)
print(x,y,z)
end
local args = {getVector2D()}
args[#args+1] = 88.0
setVector3D(unpack(args))
>> 66 77 88
2014-04-15 14:48:55
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
我认为没有这样的方式。
最简单的方法是使用变量
loaval z, x, y = 88.0, getVector2D()你可以使用代理函数:
function proxy2D(t, z) return t[1],t[2],z end setVector3D(proxy2D({getVector2D()}, 88.0))或者
function proxy2D(z, x, y) return x,y,z end setVector3D(proxy2D(88.0, getVector2D()))最后一个变量也存在于
vararg库中作为vararg.append函数。