return _M.difference(set1, set2);
end
function set_mt.__div(set, func)
- local new_set, new_items = _M.new();
+ local new_set = _M.new();
local items, new_items = set._items, new_set._items;
for item in pairs(items) do
local new_item = func(item);
return new_set;
end
function set_mt.__eq(set1, set2)
- local set1, set2 = set1._items, set2._items;
+ set1, set2 = set1._items, set2._items;
for item in pairs(set1) do
if not set2[item] then
return false;
local items = setmetatable({}, items_mt);
local set = { _items = items };
+ -- We access the set through an upvalue in these methods, so ignore 'self' being unused
+ --luacheck: ignore 212/self
+
function set:add(item)
items[item] = true;
end
end
function set:items()
- return items;
+ return next, items;
end
function set:remove(item)
items[item] = nil;
end
- function set:add_list(list)
- if list then
- for _, item in ipairs(list) do
+ function set:add_list(item_list)
+ if item_list then
+ for _, item in ipairs(item_list) do
items[item] = true;
end
end
end
function set:include(otherset)
- for item in pairs(otherset) do
+ for item in otherset do
items[item] = true;
end
end
function set:exclude(otherset)
- for item in pairs(otherset) do
+ for item in otherset do
items[item] = nil;
end
end