Lua表/类的正确用法
2019-9-21 11:20:58
收藏:0
阅读:136
评论:2
我正在尝试在Lua中使用类的行为,其中有一个船只拥有两个其他的类pos和vector,但我不能像我原以为会做到的那样让它正常工作
Point = {x=0, y=0}
function Point:new(p)
p = p or {}
return p
end
Ship =
{
pos = {Point:new{x=0,y=0}},
vector = {Point:new{x=0,y=0}} -- 我以为这样就足够可以访问vector了
}
-- 创建新的ship类
function Ship:new(pos)
p = p or {}
p.pos = pos
p.vector = Point:new{x=0,y=0} -- 我需要这样做,否则访问vector将会崩溃(问题所在)
return p
end
-- 创建新的船只...
plrShip = Ship:new{}
plrShip.pos.x = 300
plrShip.pos.y = 300
如果有人知道如何使上面的代码更简洁/更好,我会非常感激
点赞
用户9949842
我找到了解决方案,虽然并不完美,但我尝试的修改后的代码是:
Ship =
{
pos = Point:new{x=0,y=0},
vector = Point:new{x=0,y=0}
}
function Ship:new()
p = p or {}
p.pos = self.pos
p.vector = self.vector
return p
end
plrShip = Ship:new()
plrShip.pos.x = 300
plrShip.pos.y = 300
2019-09-21 15:10:14
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的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 代码?

你可以使用元表来设置默认字段。(我做了一些关于你想要做什么的假设。如果这对你不起作用,请在你的问题中添加一些澄清。)
local Point = {x=0, y=0} Point.__index = Point function Point:new(p) p = p or {} setmetatable(p, self) return p end -- 创建新的飞船类 local Ship = {} Ship.__index = Ship function Ship:new(pos) setmetatable(pos, Point) local p = {pos = pos, vector = Point:new()} setmetatable(p, self) return p end -- 创建新的飞船... local plrShip = Ship:new{} plrShip.pos.x = 300 plrShip.pos.y = 300