2013-10-21 10 views
8

लुआ 5.2 (5.1 के विपरीत) टेबल के लिए __gc का समर्थन करता है।क्या लुआजिट टेबल के लिए __gc का समर्थन करता है?

क्या लुआजिट ने इस अच्छी सुविधा को उधार लिया है?

(मैं एक गूगल खोज किया था, और LuaJIT के Change History जांच की, लेकिन इस सवाल का जवाब समझ नहीं सकता है।)

उत्तर

9

बस इसे का प्रयास करें:

-- test.lua 
do 
    local x = setmetatable({},{ 
    __gc = function() print("works") end 
    }) 
end 
collectgarbage("collect") 
collectgarbage("collect") 

$ lua51 -v 
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio 
$ lua51 test.lua 
$ lua52 -v 
Lua 5.2.2 Copyright (C) 1994-2013 Lua.org, PUC-Rio 
$ lua52 test.lua 
works 
$ luajit -v 
LuaJIT 2.0.2 -- Copyright (C) 2005-2013 Mike Pall. http://luajit.org/ 
$ luajit test.lua 
$ 

तो संक्षिप्त उत्तर नहीं है।

+1

यह संभव है कि लुआजिट बंद होने पर जीसी चक्र चलाने से परेशान न हो। एक लंबा, अधिक आवंटन भारी लिपि एक बेहतर परीक्षण हो सकता है। – delnan

+2

@ डेलनान यह नहीं होता है लेकिन मैंने इसे स्पष्ट करने के लिए अपना जवाब संपादित किया (कॉल करने के लिए 'collectgarbage' को दो बार कॉल करना सुनिश्चित करता है)। – catwell

+1

इसे सुलझाने के लिए धन्यवाद। – delnan

संबंधित मुद्दे