我想知道如何在循环中强制进行新分配:
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
谢谢,
达米安