Para começar vou mostrar como usar metatabelas e metamétodos que são partes de um sistema de classes.
//
Uma metatabela é uma tabela que faz com que nós possamos mudar o comportamento de uma tabela.
A metatabela é usada em classes mas como LUA é orientado a funções e não a objetos, então isso só vai ficar "parecendo" classes.
Para criar uma tabela usamos setmetatable.
Para saber:
self é a classe da função.
//
Metamétodos são as funções dentro dos métodos.
Para criar um metamétodo você deve fazer o seguinte:
Para você poder executar métodos e passar parametros para / entre eles você tem que definir uma metatabela, exemplo:
//
Exemplo de script:
--
Exemplo de uso:
Espero que tenham entendido
Creditos: Michael#
//
Uma metatabela é uma tabela que faz com que nós possamos mudar o comportamento de uma tabela.
A metatabela é usada em classes mas como LUA é orientado a funções e não a objetos, então isso só vai ficar "parecendo" classes.
Para criar uma tabela usamos setmetatable.
Para saber:
self é a classe da função.
//
Metamétodos são as funções dentro dos métodos.
Para criar um metamétodo você deve fazer o seguinte:
- function Classe:NomeDoMétodo ( parametros )
- end
Para você poder executar métodos e passar parametros para / entre eles você tem que definir uma metatabela, exemplo:
- -- dentro da funçao
- setmetatable ( { parametro = parametro1; parametr = parametro2 }, Classe );
- -- global, sem precisar botar dentro da funçao
- setmetatable ( { __index = Classe }, Classe );
//
Exemplo de script:
- Contatos = { } -- declara uma tabela
- -- declara um metamétodo
- function Contatos:AddClientValue ( tValues )
- -- bota todos os parametros do nosso método em uma tabela e a define como metatabela de self
- setmetatable ( { unpack ( tValues ) }, self );
- -- adiciona todos os valores em self
- table.insert ( self, tValues );
- -- executa o método SendToClient
- self:SendToClient ( 'Data sent sucessfully!' );
- end
- function Contatos:SendToClient ( sMessage )
- -- bota todos os parametros do nosso metodo em uma tabela e a define como metatabela de self
- setmetatable ( { message = sMessage }, self );
- -- envia a mensagem
- _G['print'] ( tostring ( sMessage ) ); -- _G é uma variavel contendo todas as funções de LUA
- -- declara um loop for e envia todos os dados da tabela self
- for selfIndex, selfValue in pairs ( self ) do
- for index, value in pairs ( selfValue ) do
- _G['print'] ( index .. ' => ' .. value );
- end
- end
- end
--
Exemplo de uso:
- Contatos:AddClientValue
- {
- ['Name'] = "Michael",
- ['Age'] = "20",
- ['Job'] = "Hosting Company Owner - Damaged Games";
- }
- -- Output:
- Name => Michael
- Age => 20
- Job => Hosting Company Owner - Damaged Games
Espero que tenham entendido

Creditos: Michael#
0 comentários:
Postar um comentário