Se você se referir ao Redis
EVAL
documentação você pode ver quais são as regras que o Redis usa para converter uma tabela Lua em uma resposta do Redis:- Lua table (array) -> Redis multi bulk response (truncado para o firstnil dentro do array Lua, se houver )
- Tabela Lua com um único campo ok -> Resposta de status do Redis
- Tabela Lua com um único campo de erro -> Resposta de erro do Redis
Portanto, exceto nos casos especiais 2 e 3, o Redis assume que sua tabela é uma sequência (ou seja, uma lista), o que significa que ela lê
retv[1], retv[2], ...
até encontrar um nil
elemento (aqui está a seção de código-fonte correspondente). Isso explica por que
retv["test"]
é ignorado no seu caso. Se você alterar seu código com:
local retv = {"This", "is", "a", "bug" }
retv[5] = 1000
return retv
Em seguida, este elemento adicional é retornado:
1) "This"
2) "is"
3) "a"
4) "bug"
5) (integer) 1000