我正在尝试从此视频中获取一些代码:Lua Tutorial 9: OOP and Metatables进入视频约11分钟
我对lua并不陌生,但是我有编程经验,因此在学习了语言的基础知识之后,我认为我会学到一些方法。 在我的代码中,我已经用Vector2替换了vector3,因为我现在需要在2d中工作。 Lua强大的表是我真正需要了解的内容,以便更熟练地使用粗略语言。
但是我得到一个错误: 输入:38:尝试对表值(本地'v1')执行算术运算
我在以下地方测试了相同的问题:the lua demo interpreter 我正在尝试的代码:
Vector2 = {x = 0, y = 0}
Vector2.prototype = {x = 0, y = 0}
Vector2.mt = {}
Vector2.new = function()
local vec = {}
setmetatable(vec, Vector2, mt)
for k, v in pairs(Vector2) do
vec[k] = v
end
return vec
end
Vector2.mt.__add = function(v1, v2)
local vec = Vector2.new()
vec.x = v1.x + v2.x
vec.y = v1.y + v2.y
return vec
end
function draw()
local v1 = Vector2.new()
local v2 = Vector2.new()
v1.x = 10
v1.y = 34
v2.x = 20
v2.y = 22
v1 = v1 + v2
print(v1.x)
end
draw()
任何想法。 谢谢。
答案 0 :(得分:1)
从视频复制文本时,您输入了错字。
第setmetatable(vec, Vector2, mt)
行应为setmetatable(vec, Vector2.mt)