отличается от поведения в lua 5.1
пример когда все хорошо:
tarantool> t = {1, 2, 3}
tarantool> require 'json'.encode(t)
---
- '[1,2,3]'
...
tarantool> table.remove(t, 1)
---
- 1
...
tarantool> t
---
- - 2
- 3
...
tarantool> require 'json'.encode(t)
---
- '[2,3]'
...
После удаления элемента из таблицы из 3х элементов осталось 2
Теперь другой пример
tarantool> t = {1, nil, 3}
tarantool> table.remove(t, 1)
---
- 1
...
tarantool> t
---
- - null
- null
- 3
...
tarantool> require 'json'.encode(t)
---
- '[null,null,3]'
...
После удаления элемента до nil в таблице осталось 3 элемента, а не 2
В противовес в lua 5.1:
> t = {1, nil, 3}
> table.remove(t, 1)
> print(require 'cjson'.encode(t))
[null,3]
Похожая не ожидаемая история с insert'ами:
Tarantool (ожидалось, что будет таки 4 элемента):
tarantool> t = {1, nil, 3}
tarantool> table.insert(t, 2)
tarantool> t
---
- - 1
- 2
- 3
...
tarantool> require 'json'.encode(t)
---
- '[1,2,3]'
...
Lua 5.1 (все ок):
> t = {1, nil, 3}
> table.insert(t, 2)
> print(require 'cjson'.encode(t))
[1,null,3,2]
Так задумано? или таки баг?
Опять же это догадка луа работает
Обсуждают сегодня