local a = { value = 123 }; local b = a.value; local add = function(a, b) return a + b end local s = add(a.value, b) print(s); local Point = {}; Point.new = function(x, y) local point = setmetatable({ }, { __index = Point }) point.x = x or 0 point.y = y or 0 return point end Point.move = function(self, dx, dy) self.x = self.x + dx self.y = self.y + dy end local p = Point.new(100, 100) p:move(50, 50); local filter = function(tab, handler) local _accum_0 = { } local _len_0 = 1 for _index_0 = 1, #tab do local item = tab[_index_0] if handler(item) then _accum_0[_len_0] = item _len_0 = _len_0 + 1 end end return _accum_0 end local cond = function(item) return item ~= "a" end local res = filter({ "a", "b", "c", "a" }, cond) for _index_0 = 1, #res do local s = res[_index_0] print(s) end