util/array.lua
changeset 10596 9918b4b0cd58
parent 9532 6a1e7723208b
child 10899 5777968301e8
equal deleted inserted replaced
10595:d78c5c9b0cf6 10596:9918b4b0cd58
     8 
     8 
     9 local t_insert, t_sort, t_remove, t_concat
     9 local t_insert, t_sort, t_remove, t_concat
    10     = table.insert, table.sort, table.remove, table.concat;
    10     = table.insert, table.sort, table.remove, table.concat;
    11 
    11 
    12 local setmetatable = setmetatable;
    12 local setmetatable = setmetatable;
       
    13 local getmetatable = getmetatable;
    13 local math_random = math.random;
    14 local math_random = math.random;
    14 local math_floor = math.floor;
    15 local math_floor = math.floor;
    15 local pairs, ipairs = pairs, ipairs;
    16 local pairs, ipairs = pairs, ipairs;
    16 local tostring = tostring;
    17 local tostring = tostring;
    17 local type = type;
    18 local type = type;
    38 	local res = new_array();
    39 	local res = new_array();
    39 	return res:append(a1):append(a2);
    40 	return res:append(a1):append(a2);
    40 end
    41 end
    41 
    42 
    42 function array_mt.__eq(a, b)
    43 function array_mt.__eq(a, b)
       
    44 	if getmetatable(a) ~= array_mt or getmetatable(b) ~= array_mt then
       
    45 		-- Lua 5.3+ calls this if both operands are tables, even if metatables differ
       
    46 		return false;
       
    47 	end
    43 	if #a == #b then
    48 	if #a == #b then
    44 		for i = 1, #a do
    49 		for i = 1, #a do
    45 			if a[i] ~= b[i] then
    50 			if a[i] ~= b[i] then
    46 				return false;
    51 				return false;
    47 			end
    52 			end