Limpar variavel

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

User avatar
Hologram
Posts: 126
Joined: 06 May 2020, 16:47

Limpar variavel

20 Sep 2020, 14:36

existe alguma funcao que zere todas as variaveis deixando-as como NiL ou NULL? ou o unico metodo é manualmente?
Last edited by Hologram on 20 Sep 2020, 19:29, edited 1 time in total.
Discord: Npc Bugado#9074



local config = {
delrey = getPlayerCarValue(cid, DELREY),
cigarro = getPlayerCancer(cid, DERBY),
prostituta = getPlayerAIDS(cid, cracuda),
tresOitao = getPlayerRevorvi(cid, 38)
}
if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end


User avatar
Yakshongas
Posts: 591
Joined: 21 Jan 2020, 08:41
Facebook: Yakshongas

Re: Limpar variavel

20 Sep 2020, 17:39

Code: Select all

Variable := ""
; ou
Variable = 
Please mark your topics as solved if you don't need any further help. ✅

Need a little more help? Discord : Yakshongas#9893 🕹
User avatar
Hologram
Posts: 126
Joined: 06 May 2020, 16:47

Re: Limpar variavel

20 Sep 2020, 18:21

Yakshongas wrote:
20 Sep 2020, 17:39

Code: Select all

Variable := ""
; ou
Variable =
Isso que eu considero manualmente, eu queria saber se existe alguma funçao que zere todas em uma linha só
Discord: Npc Bugado#9074



local config = {
delrey = getPlayerCarValue(cid, DELREY),
cigarro = getPlayerCancer(cid, DERBY),
prostituta = getPlayerAIDS(cid, cracuda),
tresOitao = getPlayerRevorvi(cid, 38)
}
if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end


User avatar
Gio
Posts: 1058
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Limpar variavel

21 Sep 2020, 09:35

Bom dia Hologram.

Não existe uma função de apagar todas as variáveis. Mas isso não é exatamente um problema, pois o programador pode fazer o controle dos namespaces (algo como "espaço de nomes") dentro do seu código e dessa forma, ter algo semelhante ao que você especificou.

Namespaces são, como expliquei, "espaços de nomes" e significam basicamente que você pode controlar partes do seu código onde uma variável Var será de fato a mesma variável Var que existe em outra parte do código (ou que não será a mesma, podendo ser uma variável completamente independente). Com isso, você pode criar variáveis que não afetem outras partes do código (mais ou menos como se tivessem sido apagadas entre uma porção do código e outra).


Explico: Dentro de funções, por exemplo, os namespaces são perfeitamente controláveis através das opções static e global (e através do comportamente padrão, que é o local).

Namespace Local (padrão nas funções): Quando você escreve uma função, as variáveis dentro dela só existem enquanto aquela chamada da função estiver correndo. Nenhuma variável de fora do corpo da função existe lá dentro, e por isso, mesmo que você use uma variável dentro da função que tem o mesmo nome de uma variável fora da função, elas serão variáveis totalmente diferentes.

Namespace Global: Quando você escreve uma função e utiliza a opção de namespace global, o código da função vai usar as variáveis que existem dentro e fora do corpo da função, fazendo com que uma variável de fora da função exista dentro da função, e que tudo seja controlado através dos mesmos nomes.

Namespace Static: Quando você escreve uma função e utiliza a opção de namespace Static, as variáveis existem apenas dentro da função, mas são lembradas entre chamadas da função (ou seja, elas não se apagam quando o código do corpo da função termina, mas também não afetam o exterior da função, apenas as variáveis são acessíveis novamente, com seus últimos valores, caso a mesma função seja chamada novamente).

:arrow: Portanto, se você precisa que as variáveis sejam "apagadas" em seu código, coloque seu código em uma função. O apagar ocorre quando aquela chamada à função terminar. Também é perfeitamente possível colocar apenas a parte do código que controla as variáveis dentro de uma função para chamá-la várias vezes (fazendo que um loop, por exemplo, trabalhe com variáveis que se apagam em cada iteração).

Exemplos:

Code: Select all

Var := 100
msgbox % FUNC1() ; a função FUNC1() acessa apenas o seu namespace local. Portanto, ao retornar o conteúdo de Var para o msgbox (veja o corpo da função FUNC1()), ela na verdade retorna 50, que é o conteúdo de Var dentro da função (outra variável).
msgbox % Var ; Porém Var continua sendo 100 aqui fora da função. Var dentro da função e Var fora da função são portanto variáveis diferentes e independentes!

msgbox % FUNC2() ; A função FUNC2() acessa o namespace global. Por isso, neste caso, Var dentro da função é a mesma Var fora da função, o que permite que a função retorne o valor 120 mesmo que em seu corpo não haja nova definição do valor de Var como sendo 100 antes de adicionarmos os 20. Se mudarmos o valor de Var dentro desta função global, ele também vai mudar aqui fora, de modo que a próxima msgbox vai mostrar também 120.
msgbox % Var

msgbox % FUNC3() ; A função FUNC3() acessa o namespace static. Este namespace especial significa que apesar de ser local, os valores das variáveis internas serão lembrados em diferentes chamadas à função. Por isso,  podemos chamar 3x a função e obter resultados diferentes, porém relacionadas: a cada chamada, estou acrescendo 1 ao conteúdo de var.
msgbox % FUNC3()
msgbox % FUNC3()
return

FUNC1()
{
	Var := 50
	Return Var
}
return



FUNC2()
{
	Global
	Var := Var + 20
	Return Var
}



FUNC3()
{
	Static
	If (Var = "")
	{
		Var := 1
	}
	else
	{
		Var := Var + 1
	}
	Return Var
}

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: Gio and 3 guests