A variável é um valor nomeado em um script que pode conter um valor. Se você tentar acessar uma variável que ainda não foi definida, obterá o valor nil.
1 impressão (variável) - nulo
Ao contrário de outras linguagens, Lua não é fortemente tipada e, em vez disso, é tipada dinamicamente. Isso lhe dá muito mais liberdade do que linguagens fortemente tipadas, como Java, C ++ ou C. Você pode atribuir qualquer valor de qualquer tipo a qualquer variável, esteja ela definida ou não!
Conteúdo
- 1 tipo de dados
- 2 Escopo
- 2.1 Variáveis normais
- 2.2 Variáveis locais
- 2.3 Variáveis globais
- 2.4 Campos da tabela
- 3 tabelas">Usando tabelas
- 3.1 Mesas
- 3.1.1 Para tabelas e
- 3.2 Variáveis de função
- 3.1 Mesas
- Referências 4
Tipos de dados
Os tipos de dados são apenas o que o nome diz, tipos de dados! No Roblox, temos acesso a vários tipos de dados:
Tipo | Descrição |
---|---|
Booleano | Representa verdadeiro ou falso |
função | Uma função que você pode chamar |
Zero | Nada nulo |
Número | Usado para armazenar números |
Tanga | Usado para armazenar textos, uma seqüência de caracteres Ex: "omg" |
mesa | Um grupo de itens |
Fio | Uma co-rotina |
Dados do usuário | Valores não feitos em Lua |
Objetivo
Variáveis normais
Variáveis normais podem ser acessadas de qualquer parte de um script (você não pode usar uma variável antes de atribuir um valor a ela, então ela retorna nil), mas não pode ser compartilhada entre scripts. As variáveis normais nunca devem ser usadas porque são mais lentas do que as variáveis locais e não oferecem nenhuma vantagem sobre as variáveis locais. [1]
1 - Um exemplo de uma variável normal 2 3 pi = math.pi 4 5 print (pi) - 3.1415926535898
Variáveis locais
Variáveis locais têm escopo definido e só podem ser usadas dentro de seu escopo ou como upvalues. Você só pode ter 200 variáveis locais por vez (porque Lua tem no máximo 200 registros), mas é quase impossível chegar a isso se estiver codificando de maneira normal.
Variáveis locais podem ser diferenciadas das globais por causa da palavra local colocada antes de seus nomes definidos.
1 - Um exemplo de uma variável local 2 3 local pi = math.pi 4 5 print (pi) --3.1415926535898
Variáveis normais podem ser usadas entre escopos, enquanto variáveis locais existem apenas dentro do escopo. Um escopo é, por exemplo, um loop ou uma função
1 Foo = "bar" - Faz uma variável global 2 função DoStuff () 3 local Foo = "não bar" 4 imprimir (Foo) 5 fim 6 função DoOtherStuff () 7 Foo = "isto é bar" 8 fim 9 DoStuff ( ) - não bar 10 imprimir (Foo) - bar 11 DoOtherStuff () 12 imprimir (Foo) - isto é bar
Variáveis globais
Variáveis globais podem ser usadas entre scripts. Em outras palavras, você pode remover a limpeza de uma variável em um script e obter seu valor em outro script. Para poder criar variáveis globais, você deve acessar a tabela global. _G Se você quiser fazer uma variável global, basta adicionar esse valor à tabela global:
1 _G ["MyVariable"] = "Este é o valor"
E então você pode fazer isso em outro script:
1 impressão (_G.MyVariable) - Este é o valor
Você precisa ter certeza de que o primeiro script é executado primeiro, embora você possa fazer isso adicionando um "wait ()" na linha superior do segundo script. Você também pode fazer funções globais.
1 _G ["MyFunction"] = function () print ("Esta é a função") end
E em outro script:
1 _G.MyFunction ()
Mais informações sobre como usar tabelas:
Campos da tabela
Os campos da tabela, embora se comportem de maneira diferente das variáveis normais e das variáveis locais, ainda são variáveis. [2]
tabelas">Usando tabelas
tabelas
As tabelas são grupos de campos que podem ser acessados usando a tabela. Para construir uma mesa, comece a tarefa normalmente ...
1 local a =
Em seguida, use chaves para mostrar que é uma tabela:
1 local a = {}
Para adicionar elementos à tabela diretamente no construtor da tabela, liste-os em ordem, assim:
1 local a = {1,2,3}
Para acessar um item em uma tabela, usamos algo chamado índice, que é uma espécie de nome de arquivo em um computador.
Para encontrar a variável em um determinado índice, você usa os operadores de índice, [] e o nome da tabela, como este:
1 nome da tabela local = {1,2,3} 2 3 imprimir (nome da tabela [índice])
Agora, esse código não funcionaria porque você não pode indexar uma tabela com nil, no entanto, você pode indexá-la com todo o resto, como este exemplo:
1 local tableName = {} 2 3 tableName [Workspace] = "Workspace" 4 5 tableName [game] = "game" 6 7 print (tableName [Workspace])
Usando este método, você pode obter clientes de chat de jogadores, ferramentas, qualquer coisa!
Para e tabelas
Para iterar em uma tabela, você pode usar o loop for:
1 local a = {1,2,3,4,5,6,7,8,9,10} 2 para i = 1, 10 faça 3 print (a [i]) 4 end
Alguma saída:
1
2
3
4
No entanto, às vezes, você não sabe o tamanho de uma tabela, um método é percorrer a tabela até chegar a um valor nulo:
1 local a = {2,3,4,2,4,3,4,2,3,43,2,4,3,4,2,3,4,2,3} 2 para i = 1, matemática .huge faça 3 se a [i] == nil então break end 4 print (a [i]) 5 end
No entanto, este método é muito ineficiente e pode falhar muito cedo, ou nem funcionar, como nesta tabela:
1 local a = {1,2,3,4,2,5, nulo, 3,4,2,5} 2 para i = 1, math.huge faça 3 se a [i] == nulo então quebre a extremidade 4 imprimir (a [i]) 5 final
Para evitar isso, usamos o operador de comprimento, #
1 local a = {2,3,4,2,5, nulo, 3,4,2,34,2} 2 para i = 1, #a faça 3 print (a [i]) 4 end
Isso ignora a verificação manual que tínhamos que fazer antes e nos informa o comprimento da tabela. Isso pode ser usado para selecionar jogadores aleatórios, como:
1 PlayerList local = game.Players: GetChildren () 2 RandomPlayer local = PlayerList [math.random (1, # PlayerList)]
Você também pode usar o operador de comprimento para obter o número de peças no nível superior do espaço de trabalho:
1 impressão (#Workspace: GetChildren ())
Como você deve saber, o código anterior funciona porque estamos obtendo o comprimento da tabela retornada, não o espaço de trabalho. Observe que o operador de comprimento não funciona diretamente nos dados do usuário [objetos roblox, instâncias].
Variáveis de função
Funções são as tabelas de código, ou em outras palavras, grupos de código. As funções são os blocos de construção e os organizadores do código que fornecem uma maneira de reutilizar o código indefinidamente sem ter que digitar tudo. As funções também são usadas para obter filhos recursivamente, definir propriedades, calcular coisas e outras atividades divertidas. material. Aqui está um exemplo de função:
1 função a () 2 3 fim
Visto que funções podem computar coisas, por que não criamos uma função que produza um valor?
1 local b = 0 2 função a () 3 b = b + 1 4 fim 5 impressão (b) 6 a () 7 impressão (b)
Hmm ... Essa função poderia ser melhor, vamos usar a palavra-chave return!
1 local b = 0 2 função a () 3 b = b + 1 4 return b 5 end 6 print (a (), a (), a (), a ())
O motivo pelo qual adicionamos à nossa variável b primeiro é que, assim que você retorna de uma função, sua função para de funcionar.
1 função a () 2 se verdadeiro então retorna end 3 print ("Isso nunca será executado.") 4 end 5 a ()
No código acima, a função a retorna antes de chegarmos à chamada para a função print. Isso significa que você não verá a impressão a menos que remova a devolução.
Outra coisa que você deve saber sobre a palavra-chave return é que você só pode colocá-la antes de uma palavra-chave final. Colocar um retorno no meio do seu código só é permitido se você colocar o retorno dentro de uma instrução [algo que usa um fim].
1 função a () 2 retorna end 3 print ("Você não verá isso. O retorno está dentro de uma instrução do.") 4 end 5 a () 6 7 --- E um exemplo quebrado 8 função a () 9 return 10 print ("Este código apresentará erro.") 11 end 12 a ()
Como você pode ver, o segundo exemplo não funciona porque temos um retorno no meio. Isso não apenas torna o código mais difícil de ler, mas também causa um erro.
Referências
- ↑ Dicas de desempenho de Roberto Ierusalimschy Lua
- ↑ R. Ierusalimschy, LH de Figueiredo, W. Celes; Lua 5.1 Reference Manual, Lua.org, agosto de 2006; ISBN 85-903798-3-3