diff options
| -rw-r--r-- | containers.lua | 6 | ||||
| -rw-r--r-- | containers.moon | 4 |
2 files changed, 9 insertions, 1 deletions
diff --git a/containers.lua b/containers.lua index 09de4e5..9ebbf71 100644 --- a/containers.lua +++ b/containers.lua @@ -107,7 +107,11 @@ local _list_mt = { end return nil end - } + }, + __newindex = function(self, k, v) + assert(type(k) == 'number', "List indices must be numbers") + return rawset(self, k, v) + end } list = function(t) return setmetatable(t, _list_mt) diff --git a/containers.moon b/containers.moon index deb5684..2441ccf 100644 --- a/containers.moon +++ b/containers.moon @@ -50,6 +50,10 @@ _list_mt = if x == item return i return nil + -- TODO: remove this safety check to get better performance? + __newindex: (k,v)=> + assert type(k) == 'number', "List indices must be numbers" + rawset(@, k, v) list = (t)-> setmetatable(t, _list_mt) |
