为什么我的值为空?不明白发生了什么

我有这个。

components=require("components")
entity={}
--测试---
function entity.test(x,y)
   self ={}
   self.id="test"
   --self.position=components.position(x,y)
   return self
end
return entity

在主程序中我有:

entities=require("entity")

function love.load()
test1=entities.test(100,200)
print(test1.id)
end

输出结果是好的, 但是,当我添加另一个组件时。

 components=require("components")
    entity={}
    --测试---
    function entity.test(x,y)
        self ={}
        self.id="test"
        self.position=components.position(x,y)
        return self
    end

    return entity

并打印另一个结果

  entities=require("entity")

function love.load()
    test1=entities.test(100,200)

    print(test1.id)
    print(test1.position.y)

end

我先得到一个空值,然后是一个错误,因为字段位置为空。发生了什么?提前感谢。

我的 component.lua

component = {}
--位置--
function component.position(x,y)
    self={}
    self.x=x
    self.y=y
    return self
end
return component
点赞
用户3574628
用户3574628

你可以通过将变量声明为 local 来解决这个问题,例如 local self = {}

当你调用 entity.test 时,该函数会将一个新的表分配给全局的 self。然后它调用了 components.position,该函数为 self 分配了一个全新的表,但该表从未获得 position 字段。

2018-12-13 19:17:30