Jump to content
Sign in to follow this  
Mock

string.expand(s)

Recommended Posts

Mock    32
Mock

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 by Mickfern

Share this post


Link to post
Share on other sites
Dark Billie    0
Dark Billie

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
Mock

@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
Dark Billie

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
Mock

@dark

pro que mudar pra _L?

Erro de copiação xD

Share this post


Link to post
Share on other sites
Iseme    0
Iseme

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
Mock

@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
Iseme

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
Dartier

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
Mock

@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
Dartier

ah, é como se fosse uma memoria interna do script? =o

Share this post


Link to post
Share on other sites
Conde2    0
Conde2

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 by Conde2

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×