-1

我想知道如何在循环中强制进行新分配:

for file in lfs.dir( lfs.currentdir() .. "/content" ) do
    if lfs.attributes( lfs.currentdir() .. "/content/" .. file, "mode" ) == "file" then
        if file:sub( 0, 1 ) ~= "." then

            local article = Article:new( lfs.currentdir() .. "/content/" .. file )
            table.insert( self.articles[article.lang], article )

        end
    end
end

当我通过调试器运行这段代码时,我可以看到 article 变量在内存中始终具有相同的地址,因此self.articles表中的每个元素都是完全相同的。

如何在不删除旧内存空间的情况下强制分配新内存空间(表中应引用谁)?

编辑

我目前使用 30log:https ://github.com/Yonaba/30log

Article 继承了一个 Content 类:

content.lua(部分)

local content = class()
content.__name = "Content"

function content:__init( file_path )

    self.title    = _( "Untitled document" )
    -- ... other declarations like this, nothing less, nothing more

end

-- Some methods follow

article.lua(完整)

local article = Content:extends()

article.__name = "Article"

function article:__init( file_path )

    article.super:__init( file_path )

end

return article

编辑 2

可以在此处“在上下文中”查看通话:https ://github.com/martin-damien/frankenstein/blob/master/pieces/site.lua#L151

谢谢,

达米安

4

1 回答 1

1

您的 GitHub 存储库中的代码存在几个问题,但可能与该问题相关的是这个. Lua 表索引从 1 开始,因此您指定nil为文章的默认语言...

如果我解决了这个问题以及其他问题,例如您无法使用 30log在构造函数中调用方法,那么您的代码“有效”(即在此循环之后,相关表中有几篇文章)。

于 2013-06-18T13:08:57.673 回答