Postado Janeiro 2, 2012 13 anos Escopo Aula 6 Vimos na aula anterior sobre variáveis, e vimos também, bem superficialmente, como declarar variáveis como locais. Você pode se perguntar: "Qual a utilidade de uma variável local?", "O que ela tem de diferente de uma variável global?" ou "Se elas são tão importantes, por que quase ninguém usa?". Vamos por passos. Imagine a seguinte situação: "Você tem uma variável chamada var, e ela vale 1, mas em certo ponto do script você quer que ela receba o valor 2, execute alguma coisa (Como um print) e, depois que executar, ela retorne ao valor anterior (1).". Um dos modos de fazer isto é usando uma outra variável temporária para armazenar o valor antigo, ficando assim: var = 1 temp_var = var var = 2 print(var) var = temp_var temp_var = nil print(var) Veja que o código possui 7 linhas para fazer algo tão simples, por isso usar a variável temporária foi uma idéia de girico chamada carinhosamente de Gambiarra. Vamos fazer a mesma coisa que antes, mas agora do modo "correto": var = 1 do local var = 2 print(var) end print(var) Observe que agora, mesmo tendo ficado com quase o mesmo número de linhas, está mais "charmoso". Vamos agora entender o do e o end. O do é uma estrutura de controle (Abre/Fecha um Escopo) que abre um novo escopo. O end é uma estrutura de controle (Abre/Fecha um Escopo) que fecha o escopo mais alto. Você não deve ter entendido. Imagine que os escopos são como uma pirâmide, que começa inicialmente no andar 0 (Estes números são "imaginários", somente para facilitar o entendimento). As estruturas de controle tem o poder de construir ou destruir um degrau desta pirâmide, no caso o do constrói um andar e o end destrói o andar mais alto da pirâmide. Vamos tentar entender: -- Estamos no andar 0. do -- Construímos um andar. Agora estamos no andar 1. end -- Destruímos o andar 1 e voltamos para o 0. -- Estamos no andar 0. Importante: Você deve terminar no andar que começou, ou seja, no andar 0. Vamos ver o mesmo código um pouco maior: -- Estamos no andar 0. do -- Construímos um andar. Agora estamos no andar 1. do -- Construímos mais um andar. Agora estamos no andar 2. do -- Construímos mais um andar. Agora estamos no andar 3. end -- Destruímos o andar 3 e voltamos para o 2. end -- Destruímos o andar 2 e voltamos para o 1. end -- Destruímos o andar 1 e voltamos para o 0. -- Estamos no andar 0. A definição ideal para escopo (Em Lua) seria: Até onde as variáveis locais são alcançáveis. Isso porque se você estiver no andar 1 e tiver declarado uma variável no andar 2, quando o andar 2 tiver sido destuido pelo end, a variável será apagada e você não poderá mais chamá-la no andar 1, embora você possa chamar variáveis do andar 1 se estiver no andar 2. Se esta variável existir no andar 1 e no 2, vai sempre pegar a que estiver mais perto (No caso, a do andar 2). Se existir uma local alcançável e uma global, sempre pegará a local ao invés da global. A global só será pega se não houver nenhuma local alcançável. Você pode declarar uma variável local em um andar e modificar seu valor em outro escopo. Esta é uma tática muito útil: var = 1 do local var do var = 2 end do print(var) end end print(var) Preste bastante atenção quanto à isto: var = 1 do do local var = 2 end do print(var) end end Se você está pensando que o valor escrito será 2, está muito enganado. A variável local "var" do primeiro andar 2 será apagada assim que o end destruir o andar, então o valor escrito será 1. Essa "pegadinha" pode frustrar vocês, então prestem atenção. Vale lembrar que, como as funções são armazenadas em variáveis, elas também podem ser locais: teste = function() end -- Variável Global function teste() end -- Variável Global local teste = function() end -- Variável Local local function teste() end -- Variável Local OBS: Toda Estrutura de Controle deve terminar com o end. São estruturas de controle: do function while repeat if OBS: O repeat é um caso especial e não usa end para finalizar o escopo. Ele usa o until. Veremos as 4 últimas em aulas futuras. Exercício Descubra o que acontece em cada um dos casos e por quê: var = 1 local var = 2 print(var) var = 1 do local var = 2 end print(var) var = 1 local var do var = 2 end print(var) var = 1 local var = 2 do print(var) end var = 1 do local var = 2 do var = 3 end print(var) end Creditos: 99% Skyen Hasus 1% Vittu Aula 7 Estruturas de Controles Editado Janeiro 18, 2012 13 anos por Vittu (veja o histórico de edições) www.patronum.online
Postado Janeiro 2, 2012 13 anos essa aula vai chegar ate o 10 se deixar :S Oque aconteceu com a assinatura antiga? Eu editei Prayboy Fucking You the drama Pow se te ajudei clickar nao vai quebrar a mão Att: Grimmjow
Postado Janeiro 2, 2012 13 anos Ele ta ensinando fazer script mais muita gente n intende "A MAIORIA DAS PESSOAS PEGAM PRONTO OS SCRIPTS" Oque aconteceu com a assinatura antiga? Eu editei Prayboy Fucking You the drama Pow se te ajudei clickar nao vai quebrar a mão Att: Grimmjow
Postado Janeiro 2, 2012 13 anos Autor Não tem como por em só um tópico, enfim se tiver ensinando há maioria pra mim esta bom. Edit: quem deseja ter seus propios sistemas e ser um grande programmer um dia precisa aprender LUA então não vem com essa, não é todo mundo que coloca seus scripts para ser free use. Edit2: Novatos que estão disposto a aprender, script concerteza sim. você falou que é scripter entao você nunca leu um tutorial para aprender, enfim você nunca foi "Iniciante" Vamos matar essa discusão por MP. Sem mais. Editado Janeiro 2, 2012 13 anos por Vittu (veja o histórico de edições) www.patronum.online
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.