equal
deleted
inserted
replaced
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 |