-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