Mock 32 #1 Posted September 27, 2009 (edited) Eu tava olhando umas coisas, ai me deparei com uma coisa bem interessante, a possibilidade de chamar varaveis por string sem ter que fazer aquela concanetação xata pra caramba: "oi meu nome é "..name.."." Pra isso algums usam o string format. string.format('meu nome é %s',name) Porem com essa funçãosinha MARA você evita isso! é simples D++++++++³²¹³²¹³²¹¹²³³¹² você faz isso: name = "Mock"; print( string.expand('meu nome é $name') ) Simples!!! vc poe um $ e o nome da variavel que ele procura a var na tabela global e ja manda, vc pode assim concanetar até funções, userdatas, booleans so q vai ficar uma coisa feia tipo: function: 00474F18 Ta mais vamos instalar essa função. Vá até functions.lua e adcione isso: function string.expand(s) s = string.gsub(s, "$(%w+)", function (n) return tostring(_G[n]) end) return s end e ta pronto! Exemplo usando no bearbot. [22:44:53] <@Mock> !lua nome = "Mock" animal = "Urso" quer = "Comer" comida = "Salmao" printd(string.expand('Ola eu sou o $nome eu sou um $animal. Eu to afim de $quer um $comida .')) [22:44:53] <+Bearbot> Lua print: Ola eu sou o Mock eu sou um Urso. Eu to afim de Comer um Salmao . nome = "Mock" animal = "Urso" quer = "Comer" comida = "Cumida" print(string.expand('Ola eu sou o $nome eu sou um $animal. Eu to afim de $quer um $comida .')) Sera printado isso: Ola eu sou o Mock eu sou um Urso. Eu to afim de Comer uma Cumida . Não sei vocês mais achei tesua essa função u.u ps: não funciona com variaveis locais. ps2: nao foi que quem fez! creditos a lua.org Edited January 23, 2011 by Mickfern Share this post Link to post Share on other sites
Dark Billie 0 #2 Posted September 27, 2009 Puts, que foda Mock... Vou usá-la futuramente (: Mas e as variáveis locais? Share this post Link to post Share on other sites
Mock 32 #3 Posted September 27, 2009 @dark sim pois é esqueci de mencionar isso nao funciona com variaveis locais. Share this post Link to post Share on other sites
Dark Billie 0 #4 Posted September 27, 2009 Não teria como mudar aquele _G para sei lá... _L? ome = "Mock"animal = "Urso" quer = "Comer" comida = "Salmao" print(string.expand('Ola eu sou o $nome eu sou um $animal. Eu to afim de $quer um $comida .')) A variável nome não existe, ali está ome. Share this post Link to post Share on other sites
Mock 32 #5 Posted September 27, 2009 @dark pro que mudar pra _L? Erro de copiação xD Share this post Link to post Share on other sites
Iseme 0 #6 Posted September 27, 2009 E se eu quiser usar um o $ normal, sem considerar como variável? Uso um '\' antes? //Iseme Share this post Link to post Share on other sites
Mock 32 #7 Posted September 28, 2009 @Iseme sim o $ normal sem nd depois. e se a variavle nao for encontrada basta retornar nil na funçãozinha la q ele na vai subistituir Share this post Link to post Share on other sites
Iseme 0 #8 Posted September 28, 2009 Hum.. Entendi, vo dá umas ajeitadas aqui até ficar como prefiro, só pra ter em meus scripts. Valeu ai, function interessante :]. //Iseme Share this post Link to post Share on other sites
Dartier 0 #9 Posted August 31, 2010 Foi mal reviver o tópico mas, o que seria esse _G? e pra contribuir ai vai uma função pra usar melhor. function printf(s) print(string.expand(s)) end só usar name = "Dartier" printf("Meu nome é: $name") Share this post Link to post Share on other sites
Mock 32 #10 Posted August 31, 2010 @dartier _G é a tabela global qdo vc declara algo, esse algo fica nessa tabela. Share this post Link to post Share on other sites
Dartier 0 #11 Posted September 1, 2010 ah, é como se fosse uma memoria interna do script? =o Share this post Link to post Share on other sites
Conde2 0 #12 Posted September 2, 2010 (edited) A minha =P b = "Você"A = "gay" function formateString(str) return(str:gsub("|(.-)|", (function(a) func = loadstring('return '..a) return func() end))) end print(formateString("|b| é |A|")) Edited September 2, 2010 by Conde2 Share this post Link to post Share on other sites