Variáveis e vínculos locais
Programas se tornam úteis quando conseguem lembrar valores. Em Pop, local introduz um nome dentro de uma função:
namespace Scores
function main() local score = 10 print(score)endO nome é score, e seu valor é 10. Pop vê o inicializador e infere que score tem o tipo Int. Um inicializador é obrigatório, portanto uma declaração como local score não é válida.
Escrevendo o tipo explicitamente
Seção intitulada “Escrevendo o tipo explicitamente”Você pode colocar um tipo depois do nome:
local score: Int = 10local player: String = "Ada"local active: Boolean = trueUma anotação é útil quando você quer um tipo diferente daquele que a expressão ao redor escolheria ou quando declarar o tipo torna o código mais claro. Pop ainda verifica se o inicializador corresponde a ele.
local score: String = 10Essa declaração é rejeitada porque um valor Int não pode inicializar uma variável String.
Atualizando uma variável local
Seção intitulada “Atualizando uma variável local”Variáveis locais podem receber um novo valor:
namespace Counter
function main() local count = 1 count += 1 print(count)endO programa imprime 2. A atribuição altera o valor armazenado, mas nunca muda o tipo da variável:
local count = 1count = "dois" -- erro: count é um IntPop decide o tipo de uma variável local uma única vez, em sua declaração, e verifica cada atribuição posterior em relação a esse tipo.
Múltiplas variáveis locais e atribuições também exigem aridade e tipos exatos:
local left, right = 10, 20left, right = right, leftTodos os valores do lado direito são avaliados antes dos armazenamentos; portanto, isso troca as duas variáveis locais.
Uma variável local existe desde sua declaração até o fim do bloco que a contém. Blocos são criados por funções e construções de fluxo de controle como if e while.
if ready then local message = "Iniciando" print(message)end
-- message não está disponível aquiManter nomes no menor escopo útil impede que uma parte do programa dependa acidentalmente de trabalho temporário realizado em outro lugar.
Parâmetros de função têm tipos declarados e valores fornecidos por quem chama, mas são vínculos imutáveis na rc.3. Crie uma variável local quando uma função precisar de um valor de trabalho mutável.
