dalvorsn 268 Postado Fevereiro 12, 2013 Share Postado Fevereiro 12, 2013 (editado) Autor: DalvoDescrição: Constam nessa lib funções atribuidas a chamada de metamétodos. Biblioteca Auxiliar String aNs7gidD[/pastebin] Exemplos de Uso • Metamétodo __index: Input: local str = "xtibia123" print(str[1], str[2], str[3], str[4], str[5], str[6]) local table_find = str["x(.+)"] print(table_find.init, table_find.final, table_find.ret) Output: >lua -e "io.stdout:setvbuf 'no'" "teste.lua" x t i b i a 1 9 tibia123 • Metamétodo _unm: Input: local str = "xtibia" print(-str) Output: >lua -e "io.stdout:setvbuf 'no'" "teste.lua" aibitx • Metamétodo __call: Input: local var = "xtibia" print(var(1), var(1,-1), var(1,3)) Output: >lua -e "io.stdout:setvbuf 'no'" "teste.lua" x xtibia xti • Metamétodo __add: Input: print("x" + "tibia") Output: >lua -e "io.stdout:setvbuf 'no'" "teste.lua" xtibia • Metamétodo __sub: Input: print("xtibia" - "tibia") Output: >lua -e "io.stdout:setvbuf 'no'" "teste.lua" x • Metamétodo __mul: Input: print("xtibia" * 5) Output: >lua -e "io.stdout:setvbuf 'no'" "teste.lua" xtibiaxtibiaxtibiaxtibiaxtibia Editado Fevereiro 12, 2013 por dalvorsn Link para o comentário https://xtibia.com/forum/topic/207429-biblioteca-auxiliar-string/ Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Fevereiro 13, 2013 Share Postado Fevereiro 13, 2013 Caramba, sensacional. Pra ser sincero, eu nem sabia que tinha um jeito de fazer operações com as strings. É possível fazer com outros valores? Usando os metamétodos? Link para o comentário https://xtibia.com/forum/topic/207429-biblioteca-auxiliar-string/#findComment-1467981 Compartilhar em outros sites More sharing options...
Vinc 101 Postado Fevereiro 13, 2013 Share Postado Fevereiro 13, 2013 (editado) seria interesante com tables(comparação,soma,subtração,etc),isso seria possivel? Editado Fevereiro 13, 2013 por lordbug99 Link para o comentário https://xtibia.com/forum/topic/207429-biblioteca-auxiliar-string/#findComment-1468200 Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Fevereiro 13, 2013 Autor Share Postado Fevereiro 13, 2013 (editado) Caramba, sensacional. Pra ser sincero, eu nem sabia que tinha um jeito de fazer operações com as strings. É possível fazer com outros valores? Usando os metamétodos? Sim, number, só que o procedimento é um pouco diferente. debug.setmetatable(0, { __index = function(self, key) print(self, key) end, __len = function(self) print(self) end, __call = function(self, ...) print(self, ...) end --etc }) local _ = #(1000) local _ = (1000)("arg1", "arg2") local _ = (1000)[500] Dependendo da sua criatividade, da pra fazer algo legal para os numeros :> Bollean, table, function não consegui fazer, userdata e thread não tentei. #Edit Corrigindo, consegui agora usar com function, mas por algum motivo que desconheço, o metodo __call não altera. debug.setmetatable(function()end, { __index = function(self, key) print(self, key) end, __len = function(self) print(self) end, __call = function(self, ...) print(self, ...) end --etc }) function new() print "vish" end local _ = new[1] local _ = #new local _ = new() seria interesante com tables(comparação,soma,subtração,etc),isso seria possivel? Não, porque o tipo table tem metatable independente, cada tabela pode possuir sua própria metatable. Editado Fevereiro 14, 2013 por dalvorsn Link para o comentário https://xtibia.com/forum/topic/207429-biblioteca-auxiliar-string/#findComment-1468355 Compartilhar em outros sites More sharing options...
BrenoNeto 170 Postado Fevereiro 13, 2013 Share Postado Fevereiro 13, 2013 Nossa que maneiro, a pena é que eu não intendo nada disso. Boa REP+ Link para o comentário https://xtibia.com/forum/topic/207429-biblioteca-auxiliar-string/#findComment-1468381 Compartilhar em outros sites More sharing options...
MaXwEllDeN 89 Postado Fevereiro 14, 2013 Share Postado Fevereiro 14, 2013 Nossa Dalvo, só tenho uma coisa a te falar cara: Meus parabéns, ótimo jeito de utilizar os metamétodos, ficou muito legal bro, na boa [:. Me add no Skype depois bro '-': MaXwEllDeN Link para o comentário https://xtibia.com/forum/topic/207429-biblioteca-auxiliar-string/#findComment-1468752 Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Fevereiro 14, 2013 Autor Share Postado Fevereiro 14, 2013 Nossa Dalvo, só tenho uma coisa a te falar cara: Meus parabéns, ótimo jeito de utilizar os metamétodos, ficou muito legal bro, na boa [:. Me add no Skype depois bro '-': MaXwEllDeN ty e tá add la flor Link para o comentário https://xtibia.com/forum/topic/207429-biblioteca-auxiliar-string/#findComment-1468824 Compartilhar em outros sites More sharing options...
Vinc 101 Postado Fevereiro 15, 2013 Share Postado Fevereiro 15, 2013 Não, porque o tipo table tem metatable independente, cada tabela pode possuir sua própria metatable. eu pensei num metodo pra isso,mas é meio pog e falho, da pra atribui uma metatable a _G e usa newindex pra checa o type e atribui uma mettable,mas n funciona em variaveis locais e se reafirma a varivel ela fica sem metatable. Link para o comentário https://xtibia.com/forum/topic/207429-biblioteca-auxiliar-string/#findComment-1469812 Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Fevereiro 15, 2013 Autor Share Postado Fevereiro 15, 2013 Não, porque o tipo table tem metatable independente, cada tabela pode possuir sua própria metatable. eu pensei num metodo pra isso,mas é meio pog e falho, da pra atribui uma metatable a _G e usa newindex pra checa o type e atribui uma mettable,mas n funciona em variaveis locais e se reafirma a varivel ela fica sem metatable. Até entendi seu ponto de vista, acho que poderia até dar certo, mas o trabalho que daria fora a quantidade de bugs poderia tornar inviavel. Assim que puder tentarei fazer isso e lhe digo se é viável ou não. Link para o comentário https://xtibia.com/forum/topic/207429-biblioteca-auxiliar-string/#findComment-1469829 Compartilhar em outros sites More sharing options...
Vinc 101 Postado Fevereiro 16, 2013 Share Postado Fevereiro 16, 2013 (editado) Até entendi seu ponto de vista, acho que poderia até dar certo, mas o trabalho que daria fora a quantidade de bugs poderia tornar inviavel. Assim que puder tentarei fazer isso e lhe digo se é viável ou não. funciona,funciona o problema é que n funciona em em locais e quando re-utiliza uma varivel para as locais daria pra cria uma varivel antes e iguala a local a varivel eu tinha feito poucos teste,mas fora isso n vi nenhum bug,vo da mais umas testas outro problema e quando usa algo do tipo {{}},tbm fica sem mesmo usando newindex na nova tabela Editado Fevereiro 16, 2013 por lordbug99 Link para o comentário https://xtibia.com/forum/topic/207429-biblioteca-auxiliar-string/#findComment-1470341 Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Fevereiro 23, 2013 Autor Share Postado Fevereiro 23, 2013 Até entendi seu ponto de vista, acho que poderia até dar certo, mas o trabalho que daria fora a quantidade de bugs poderia tornar inviavel. Assim que puder tentarei fazer isso e lhe digo se é viável ou não. funciona,funciona o problema é que n funciona em em locais e quando re-utiliza uma varivel para as locais daria pra cria uma varivel antes e iguala a local a varivel eu tinha feito poucos teste,mas fora isso n vi nenhum bug,vo da mais umas testas outro problema e quando usa algo do tipo {{}},tbm fica sem mesmo usando newindex na nova tabela fiz inumeros testes aqui e nenhum teve êxito total quando declarar a variavel como global da pra setar newindex, e nas de dentro é só verificar se é table e setar e nas tables das tables dentro, isso não é o problema, o problema é quando ou a tabela é declarada como local, ou é simplesmente usada, sem previamente declarar: local tab = {} print(tab * {}) print({} - {}) nenhum desses casos chama o metametodo newindex Link para o comentário https://xtibia.com/forum/topic/207429-biblioteca-auxiliar-string/#findComment-1474618 Compartilhar em outros sites More sharing options...
Vinc 101 Postado Fevereiro 23, 2013 Share Postado Fevereiro 23, 2013 eu pensei em checa as tableas dentro,mas problematico por tem que checa recursividade,se a de dentro ja tem metatable. pensei em muda as funções de getpos e coloca pra já seta metatable,mas dai tem as pos que vem como arg de funções como onStepIn e tals,então acho que o melhor é o que o MaXwEllDeN uso(cria uma função pra seta a metatable),mas colocaria pra qualquer table,n só as de pos. Link para o comentário https://xtibia.com/forum/topic/207429-biblioteca-auxiliar-string/#findComment-1475286 Compartilhar em outros sites More sharing options...
Posts Recomendados