Ir para conteúdo

#6 - aula de scripting lua - Variaveis


Poccnn

Posts Recomendados

Variáveis

 

Aula anterior, caso não tenha lido.

 

aulaLogo.jpg

 

Palavras e caracteres reservados que será usado nessa aula:

= { } ( ) function return end local do

 

 

Variável nada mais é do que um espaço na memoria que aloca um dado (informação) e contem um nome como identificador (ponteiro) para essa informação.

Lua é uma linguagem dinamicamente tipada e, portanto tu não precisa declarar de que tipo se trata aquele determinado dado.

Lua também é uma linguagem sensível a maiúsculas e minúsculas, portanto existe diferença entre a palavra oi e a palavra Oi (com o “o” maiúsculo).

 

 

Como se cria uma variável?

 

 

Basicamente declarando uma palavra que seja alfanumérica.

Nomedavariavel

Nomedavariavel2689

umNomeQualquer

 

 

Agora que criamos a variável, o que podemos fazer com ela?

Vamos atribuir valores a ela de todo tipo.

E como se atribui valores a ela?

Com o caractere de atribuição; veja:

Nomedavariavel = “essa variável contem esse texto”

number =  546789

tabela = {} -- uma tabela vazia

bool = true -- boolean

digaoi = function() return ‘oi’ end -- outro modo de declarar uma função.

 

 

 Como eu pego esses valores declarados em variáveis?

Usando o nome que foi declarado pra ele.

Lembre-se que lua diferencia letras maiúsculas de letras minúsculas.

 

 

Usando como exemplo as palavras que usei para criar as variáveis acima sendo chamado pela função print:

 

Nomedavariavel = “essa variável contem esse texto”

print(Nomedavariavel) >> essa variável contem esse texto

print(nomedavariavel) >> nil -- a saída é nula devido a variável não existir; lembre-se que lua diferencia maiúscula de minúscula.

 

 

number =  546789

print(number) >> 546789

print(Number) >> nil -- idem.

 

 

digaoi = function() return ‘oi’ end

print(digaoi()) >> oi

print(DigaOi()) >> nil

 

 

Tu poderás declarar as variáveis uma pós outra; esse recurso não serve somente para diminuir as linhas do código e torna-lo mais legível, mas também é usado como um recurso para pegar múltiplos valores retornados por funções.

 Exemplo:

 

function multiplosRetorno()

         return 1,”retorno”, {texto = “não se imprime tabelas”}

end

 

 

Para que eu tenha acesso aos dados retornados por tal função, eu teria que atribuir uma variável para cada retorno; dessa forma:

numero, string, tab = multiplosRetorno()

 

 

Associando a função as variáveis, eu consigo pegar todos os dados retornados por ela.

print(numero) >> 1

print(string) >> retorno

print(tab.texto) >> não se imprime tabelas

 

 

Uma pratica comum em programação é anular um dado desnecessário que fora retornado; usando o caractere underline (linha baixa).

numero, _, tab = multiplosRetorno() -- underline impossibilitando de pegar o valor retornado naquela posição pela função.

 

Lua dispõe de uma forma própria de operador ternário, que consiste em fazer uma comparação logica na qual se for verdadeiro ele assume o valor atribuído/direcionado pela palavra and ou, caso seja falsa a condição, assume o valor atribuído/direcionado pela palavra or.

 

condição == logica and valor caso seja verdadeiro or valor caso seja falso

 

getPlayerLevel(cid) >= 100 and “welcome to hell!!!” or “noob”

 

 

Como Lua é uma linguagem dinamicamente tipada, tu poderás mudar o tipo de dado atribuído a variável a qualquer momento.

 

dado = true

 

 

if(type(dado) == "boolean" )then    dado = "string" end

 

print(type(dado)) >> "string"

 

 

dado = type(dado) == "string" and 123 or type(dado) --  Forma do operador ternário usado por lua

 

print(type(dado)) >> "number"

 

 

dado = {str = "string"}

 

print(type(dado)) >> "table"

 

 

Vamos explicar um pouco sobre a palavra reservada “local”.

Ao declararmos uma variável, ela assume uma posição global, mas caso não se faça necessário ou não seja permitido que isso ocorra, faz-se do uso da palavra “local” para que aquela variável seja visível apenas naquele bloco e nada mais.

do -- criando um bloco

 

var = "variavel global"

end

print(var) >> variavel global

Veja que a variável “var” que foi declarada dentro de um bloco ficou visível fora dele, pois se trata de uma variável global, portanto visível para todos; Se tivesse sido declarado à palavra “local” na variável, ela ficaria visível apenas para o bloco e nada mais.

 

 

Agora veja esse caso:

 

var = "variavel global"

do -- criando um bloco

local var = "variavel local"

         print(var) >> variavel local

         var = "variavel alterada" -- alterando o texto da variável “var”

         print(var) >> variavel alterada

end

print(var) >> variavel global

Veja que eu declarei uma variável local dentro de um bloco com o mesmo nome da variável global. A variável local sofreu alterações de texto, só que a variável global não, mesmo tendo o mesmo nome.

Isso se deu devido a que, quando se declara uma variável local, ela só é valida para aquele bloco, todo e qualquer alteração, só valera para ela, não afetando nada externamente.

 

 

Agora adicionem em seus códigos variáveis tanto locais quanto globais e atribua a elas valores de vários tipos.

Inté a próxima aula.

aulaLogo.jpg.4a2065d72840489bdb7450c6a48534c1.jpg

Editado por Poccnn
Link para o comentário
Compartilhar em outros sites

  • Poccnn featured e pinned this tópico

legal aprendi algo novo hoje
proff n quero me intrometer em suas aulas mas vou falar nas dificuldades como um aluno teu
lendo essa aula demorou cair a fixa em alguns casos pelo motivo q vou dizer
quando a gente se depara com um script seja la qual for umas das primeiras coisas que observei ate hoje foi que tem uma ou varias tabelas ou começa abrindo uma função
pode ter outros casos mas é oque mais observo
você explicando (pelo menos no meu caso) fico confuso pois não vejo as funções nem o if, else, elseif e etc ()
acredito (pelo menos pra mim) que ficaria mais fácil uma aula usando um script qualquer como exemplo, focando no ponto em questão como no caso de hoje foi as variáveis

 

Editado por wevertonvrb
Link para o comentário
Compartilhar em outros sites

@wevertonvrb

Eu entendo o que tu disse, mas existe um bom motivo para isso.

Tirar as pessoas da zona de conforto delas faz com que eles se deparem com a realidade.

 

Quando tu pega um script puro de Lua, quem só reconhece os scripts de ot server, fica perdido sem saber o que fazer, pois não conhece a linguagem em si de lua, apenas scripts pré programados.

 

Posso estar errado e portanto vou dar um exemplo usando scripts de ot server para saber se realmente ajuda a aprender ou vai manter as pessoas na mesma.

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...