In Lua all arrays are just dictionaries with integer keys, a[0] will work just fine. It’s just that all built-in functions will expect arrays that start with index 1.
That’s slightly misleading, I think. There are no arrays in Lua, every Lua data structure is a table (sometimes pretending to be something else) and you can have anything as a key as long as it’s not nil. There’s also no integers, Lua only has a single number type which is floating point. This is perfectly valid:
local tbl = {}
local f = function() error(":(") end
tbl[tbl] = tbl
tbl[f] = tbl
tbl["tbl"] = tbl
print(tbl)
-- table: 0x557a907f0f40
print(tbl[tbl], tbl[f], tbl["tbl"])
-- table: 0x557a907f0f40 table: 0x557a907f0f40 table: 0x557a907f0f40
for key,value in pairs(tbl) do
print(key, "=", value)
end
-- tbl = table: 0x557a907f0f40
-- function: 0x557a907edff0 = table: 0x557a907f0f40
-- table: 0x557a907f0f40 = table: 0x557a907f0f40
print(type(1), type(-0.5), type(math.pi), type(math.maxinteger))
-- number number number number
PHP did that same thing. It was a big problem when algorithmic complexity attacks were discovered. It took PHP years to integrate an effective solution that didn’t break everything.
Lua - Portuguese feminine noun for “moon”, coming from the Latin “luna”
Luna - Latin, feminine noun (coincidentally identical to the Italian noun, also feminine)
Writing Lua code that also interacts with C code that uses 0 indexing is an awful experience. Annoys me to this day even though haven’t used it for 2 years
Lua has entered the chat
Lua had been banned from the chat
In Lua all arrays are just dictionaries with integer keys, a[0] will work just fine. It’s just that all built-in functions will expect arrays that start with index 1.
Your argument isn’t making me any happier - it just fills me with more rage.
That’s slightly misleading, I think. There are no arrays in Lua, every Lua data structure is a table (sometimes pretending to be something else) and you can have anything as a key as long as it’s not nil. There’s also no integers, Lua only has a single number type which is floating point. This is perfectly valid:
PHP did that same thing. It was a big problem when algorithmic complexity attacks were discovered. It took PHP years to integrate an effective solution that didn’t break everything.
Fortran angrily starts typing…
Don’t do my boy Lua dirty like that >:(
I always felt that Lua was a girl
Lua - Portuguese feminine noun for “moon”, coming from the Latin “luna”
Luna - Latin, feminine noun (coincidentally identical to the Italian noun, also feminine)
Yup, Lua is a girl.
and MATLAB, Visual Basic (with
Option Base 1
), and SQL.This is one of the few things that I really don’t like any Lua. It’s otherwise pretty decent and useful.
Writing Lua code that also interacts with C code that uses 0 indexing is an awful experience. Annoys me to this day even though haven’t used it for 2 years