ループ内で新しい割り当てを強制する方法を知りたい:
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
ありがとう、
ダミアン