×

Langue

Fermer
Atelier 801
  • Forums
  • Dev Tracker
  • Connexion
    • English Français
      Português do Brasil Español
      Türkçe Polski
      Magyar Română
      العربية Skandinavisk
      Nederlands Deutsch
      Bahasa Indonesia Русский
      中文 Filipino
      Lietuvių kalba 日本語
      Suomi עברית
      Italiano Česky
      Hrvatski Slovensky
      Български Latviešu
      Estonian
  • Langue
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Tutorial] Quando utilizar "local" ?
[Tutorial] Quando utilizar "local" ?
Esh
« Censeur »
1460745540000
    • Esh#0095
    • Profil
    • Derniers messages
    • Tribu
#1
  0

I. Introdução ao problema
    Sendo pouco utilizado em códigos, a falta de uso da key local na declaração de variáveis pode causar erros no seu código, causando uma dor de cabeça tremenda. A forma como a linguagem Lua foi construída, faz com que todas as variáveis declaradas no seu código, sejam armazenadas na tabela _G, e como todos nós já sabemos, é impossível para uma tabela ter índices iguais:

      tabela = {
        cor = "branco",
        cor = "amarelo"
      }

    No exemplo dado acima, temos dois índices "cor" com valores diferentes, ao obter o output de tabela.cor, o valor retornado será amarelo e não branco, pois cor = branca foi substituída pelo valor cor = amarela. A mesma aplicação acontece com variáveis não locais.


II. Como e quando declarar uma váriavel local?
    Para declarar uma variável local, é simples: basta preceder o nome da variável com a key local, e esta variável não ficará disponível na tabela _G, tornando ela única. Vamos exemplificar utilizando uma função: a variavel COR é uma string que guarda o hex da cor branca: FFFFFF, e abaixo do código existe uma função que utiliza uma variável de mesmo nome para guardar quantas vezes tal cor foi utilizada:


      cor = "FFFFFF"
      function contarCor(tabela)
        cor = 0
        for k, v in pairs(tabela)
          cor = cor+1
        end
        return cor
      end


    Antes da função ser iniciada, a variável cor é uma string, e após a função, ela se torna uma variável de tipo number, isso acontece porque cor dentro da função não é local, e toda a mudança que irá ocorrer dentro da função, irá se aplicar no código todo. Para evitar essa mudança que pode causar erros no seu código, a adição da key local antes da variável cor dentro da função, evitará a sobreposição de dados:


      cor = "FFFFFF"
      function contarCor(tabela)
        local cor = 0
        for k, v in pairs(tabela)
          cor = cor+1
        end
        return cor
      end


    Agora mesmo após o uso da função, a variável cor ainda continua como string, já que "cor" dentro da função, vai se limitar suas mudanças apenas dentro da função.

III. Considerações finais
    _G é uma tabela que armazena todas as variáveis declaradas no script, menos as precedidas pela key "local", evitando a possível sobreposição de dados por variáveis de mesmo nome.

Laagaadoo
« Citoyen »
1460746140000
    • Laagaadoo#0000
    • Profil
    • Derniers messages
    • Tribu
#2
  0
Bom tópico esh, além das variáveis locais serem muito mais rápidas que as globais

Dernière modification le 1460746620000
Nyrket
« Citoyen »
1460757540000
    • Nyrket#0000
    • Profil
    • Derniers messages
#3
  0
Arrasou, Eshkation!
Squalleze
« Citoyen »
1460774100000
    • Squalleze#0000
    • Profil
    • Derniers messages
    • Tribu
#4
  0
Poderia ter dito que não e recomedado o uso de variaveis de mesmo nome, independente de ser local ou não, ja que além de poder causar conflitos pode deixar o código "menos legivel".

Bom tópico pra quem é begginer
Esh
« Censeur »
1460774580000
    • Esh#0095
    • Profil
    • Derniers messages
    • Tribu
#5
  0
Squalleze a dit :
Poderia ter dito que não e recomedado o uso de variaveis de mesmo nome, independente de ser local ou não, ja que além de poder causar conflitos pode deixar o código "menos legivel".

Bom tópico pra quem é begginer

tal como espremer os nomes tb n é, nomear variavel vai depender de cada programador, o tópico serve mais de um aviso, para que todos os que escrevem codigos na seçao passem a adotar a key local, que parece ser desconhecida pra mts
Bigbryanbig
1480980360000
    • Bigbryanbig#0000
    • Profil
    • Derniers messages
    • Tribu
#6
[Modéré par Omitotowch, raison : Sem relação.]
Jow
« Consul »
1481031060000
    • Jow#4884
    • Profil
    • Derniers messages
#7
  0
nyrket a dit :
Arrasou, Eshkation!
Rip
« Citoyen »
1550157660000
    • Rip#8110
    • Profil
    • Derniers messages
    • Tribu
#8
  0
não sabia disso.. obg bom tópico
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Tutorial] Quando utilizar "local" ?
© Atelier801 2018

Equipe Conditions Générales d'Utilisation Politique de Confidentialité Contact

Version 1.27