lua oop开始

时间:2018-09-22 12:01:04

标签: oop lua

我正在尝试从此视频中获取一些代码: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()

任何想法。 谢谢。

1 个答案:

答案 0 :(得分:1)

从视频复制文本时,您输入了错字。

setmetatable(vec, Vector2, mt)行应为setmetatable(vec, Vector2.mt)