Autor: Felipe Almeida
Classes de eventos e metatable
28 de Março de 2011, 20:56 - | 1 Pessoa seguindo este artigo.
Visualizado 27 vezes
Olá,
Existem vários exemplos no clube ncl de aplicações com Ginga
NCL/Lua. Porém, a maioria destas faz uso da tabela de eventos recebida
em seus 'event handlers' da seguinte forma: evt.class,evt.key. Porém,
não encontrei na norma nenhum lugar informando que a tabela tem sua
metatable modificada. Ou seja, a não ser que eu não esteja encontrando
esse requerimento em algum lugar, então *quase todas* as aplicação
estão erradas.
Existe de fato o requerimento da implementação de modificar a metatable
para que esses lookups ocorram na tabela? A única informação sobre
a natureza da tabela que encontrei foi o seguinte:
start - quote
A função event.post() e o “handler” registrado em event.register()
recebem eventos como parâmetros.
Um evento é descrito por uma tabela Lua normal, onde o campo class é
obrigatório e identifica a classe do evento.
end - quote
Onde aparentemente uma simples tabela seria suficiente.
Espero porém que esse requerimento exista e eu não esteja encontrando apenas.
[]'s
--
Felipe Magno de Almeida
33 comentários
>
> Em Lua, table.key é apenas um forma *mais simples* de escrever table["key"] quando key é uma string. Sendo assim, a table evt recebida pela função tratadora do NCLua sempre é uma tabela *Lua normal*.
>
> Recomendo que você dê uma lida nos links abaixo para tirar qualquer dúvida:
>
> www.lua.org/manual/5.1/manual.html#2.5.7
>
> lua-users.org/wiki/TablesTutorial
>
> www.ncl.org.br/documentos/MCNCLua.pdf Aparentemente isso não ocorre quando se cria uma tabela com
lua_newtable. Mas se está na documentação, vou passar essa dúvida para
a lista de Lua. > Abraços! Obrigado,
--
Felipe Magno de Almeida