ex5_6.lua 698 B

1234567891011121314151617181920212223242526272829303132333435
  1. local function is_sequence(t)
  2. local prev_k = 0
  3. for k, _ in pairs(t) do
  4. if type(k) ~= "number" or k ~= prev_k + 1 then
  5. return false
  6. end
  7. prev_k = prev_k + 1
  8. end
  9. return true
  10. end
  11. local function table_str(t)
  12. local str = "{"
  13. for k, v in pairs(t) do
  14. if type(k) == "string" then
  15. k = '"' .. k .. '"'
  16. end
  17. str = ("%s [%s] = %s,"):format(str, k, v)
  18. end
  19. str = str .. " }"
  20. return str
  21. end
  22. local function test(t)
  23. print(("%s: %q"):format(table_str(t), is_sequence(t)))
  24. end
  25. test({ 1, 2, 3, word = "a word", [10] = 999 })
  26. test({ 1, 2, 3 })
  27. test({ [1.0] = 1, [2] = 2 })
  28. test({ [1.1] = 1, [2] = 2 })