function newObject(value) return function(action,v) if action == "get" then return value elseif action == "set" then value = v else error("invalid action") end end end d = newObject(0) print(d("get")) --0 d("set",100) print(d("get")) --100
value值应该就是那个非局部变量了,每个对象用到一个closure,比用一个table高效。