36 lines
698 B
Lua
36 lines
698 B
Lua
local function is_sequence(t)
|
|
local prev_k = 0
|
|
for k, _ in pairs(t) do
|
|
if type(k) ~= "number" or k ~= prev_k + 1 then
|
|
return false
|
|
end
|
|
|
|
prev_k = prev_k + 1
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
local function table_str(t)
|
|
local str = "{"
|
|
for k, v in pairs(t) do
|
|
if type(k) == "string" then
|
|
k = '"' .. k .. '"'
|
|
end
|
|
str = ("%s [%s] = %s,"):format(str, k, v)
|
|
end
|
|
|
|
str = str .. " }"
|
|
|
|
return str
|
|
end
|
|
|
|
local function test(t)
|
|
print(("%s: %q"):format(table_str(t), is_sequence(t)))
|
|
end
|
|
|
|
test({ 1, 2, 3, word = "a word", [10] = 999 })
|
|
test({ 1, 2, 3 })
|
|
test({ [1.0] = 1, [2] = 2 })
|
|
test({ [1.1] = 1, [2] = 2 })
|