From 4ec10b55071f81a9d006fb37ecb7efcd4030d394 Mon Sep 17 00:00:00 2001 From: najoast Date: Wed, 22 May 2024 15:24:41 +0800 Subject: [PATCH] Move delete_handler to options --- test.lua | 6 ++++-- zset.lua | 13 +++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/test.lua b/test.lua index 57ec046..d0fa402 100644 --- a/test.lua +++ b/test.lua @@ -15,10 +15,12 @@ local function random_choose(t) end local function delete_handler(member) - print("delete", member) + print("delete", member) end -local zs = zset.new(delete_handler) +local zs = zset.new { + delete_handler = delete_handler, +} while true do local score = random_choose(all) diff --git a/zset.lua b/zset.lua index 40cbd09..1844980 100644 --- a/zset.lua +++ b/zset.lua @@ -110,17 +110,26 @@ function mt:dump() end local M = {} -function M.new(delete_handler) + +---@class zset.options +---@field delete_handler fun(member:string) + +--- Create a new zset +---@param options zset.options +function M.new(options) local obj = {} obj.sl = skiplist() obj.tbl = {} + + local delete_handler = options and options.delete_handler obj.delete_function = function(member) obj.tbl[member] = nil if delete_handler then delete_handler(member) end end + return setmetatable(obj, mt) end -return M +return M