Introdução a dicionários

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Dicionários são tabelas que associam nomes ou chaves a um valor em vez de um índice.

Exemplo:

Sintaxe do dicionário Luau

local pet = {
Name = "Bobbie",
Type = "Dog",
}

Use dicionários quando precisar rotular valores, não apenas listá-los em ordem como um array faz.Pratique usar dicionários neste tutorial manipulando valores associados a um jogador.

Sintaxe do dicionário

Assim como arrays, dicionários são atribuídos a uma variável com curly brackets {} . Pares de chave-valor são armazenados em linhas separadas seguidas por um vídeo.Chaves e valores podem ser qualquer digitardado, incluindo strings, números e nomes de variáveis.


local playerNames = {
player1 = "Zap",
player2 = "Kel",
}
print(playerNames["player1"])

Para referenciar peças ou outros objetos instanciados como chaves, use parênteses.


local greenPart = workspace.GreenPart
local redPart = workspace.RedPart
local partList = {
[greenPart] = true,
[redPart] = false,
}
print(partList[redPart])

Criar um dicionário

Um uso diário de dicionários é organizar informações do jogador ou personagem.Esses passos exploram como a informação de um personagem teórico inimigo pode ser armazenada e acessada.

  1. Em um novo script, crie um dicionário chamado enemy .


    local enemy = {
    }
  2. A primeira chave no dicionário rastreará o nome do adversário / inimigocom uma variável chamada Name .


    local enemy = {
    Name
    }
  3. Atribua um nome de inimigo à chave, seguido por um ponto-e-vírgula.


    local enemy = {
    Name = "Spike",
    }
  4. Adicione um segundo par de chave-valor para quanta saúde o inimigo deve ter. Lembre-se, as chaves sempre devem usar o mesmo digitarde dado, mas os valores não precisam.


    local enemy = {
    Name = "Spike",
    Health = 1000,
    }

Usar valores de dicionário

Existem duas maneiras de acessar os valores do dicionário:

  • tableName["keyName"] (importante, note as citações)
  • tableName.keyName

local enemy = {
Name = "Spike",
Health = 1000,
}
print("The villain " .. enemy["Name"] .. " approaches!")
print("The villain " .. enemy.Name .. " approaches!")

Qual estilo usar geralmente depende do propósito da tabela.Para mesas que armazenam uma coleção de valores como uma lista de jogadores em um servidor, os codificadores geralmente usarão tableName["keyName"].Para um dicionário usado para descrever um Objeto, os codificadores são mais prováveis de usar tableName.keyName .

Altere um valor de dicionário

Mudar o valor de uma chave é o mesmo que qualquer outra variável; use o operador igual =.

  1. Abaixo da tabela enemy, defina o nome do adversário / inimigopara outra coisa.


    local enemy = {
    Name = "Spike",
    Health = 1000,
    }
    enemy.Name = "Rana"
    print("The enemy's name is " .. enemy.Name)
  2. Teste e verifique a janela de Saída.

Variáveis pré-existentes como chaves

Dicionários podem interagir com variáveis pré-existentes declaradas em outras partes de um script.O seguinte exemplo de codificação usa uma variável para adicionar o nome de um jogador como chave quando eles se juntam à experiência e, em seguida, define o valor de seus pontos para 0.

  1. Em Serviço de Script de Servidor , crie um novo script chamado PlayerPoints.No script, obtenha o Serviço de Jogadores e crie um dicionário vazio chamado playerPoints.


    local Players = game:GetService("Players")
    local playerPoints = {
    }
  2. Codifique uma função local para definir pontos de jogador com um parâmetro para uma nova variável de jogador. Conecte a função ao evento Players.PlayerAdded.


    local playerPoints = {
    }
    local function setPoints(newPlayer)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. Na função, adicione uma variável para obter o Name do jogador, uma propriedade em todos os Objeto Jogador , e uma declaração de impressão para testes.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. name)
    end
  4. Insira name no dicionário playerPoints como chave e defina o valor, os pontos do jogador, para 0.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. name)
    playerPoints[name] = 0
    end
  5. Use name para imprimir o nome do jogador e playerPoints[name] para imprimir o valor da chave que corresponde à variável.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. name)
    playerPoints[name] = 0
    print(name .. " has " .. playerPoints[name] .. " points.")
    end
  6. Execute o projeto e observe o saída.

scriptfinalizado

local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("hello " .. name)
playerPoints[name] = 0
print(name .. " has " .. playerPoints[name] .. " points.")
end
Players.PlayerAdded:Connect(setPoints)

Desafios facultativos

Abaixo estão alguns desafios que se aplicam ao uso de dicionários de diferentes maneiras. Veja se você pode construir o código para esses.

  • Crie uma parte de armadilha que cause dano ao longo do tempo a um jogador. Uma vez que um jogador toque na armadilha, cause-lhe dano, espere, então permita que seja danificado novamente.
  • Crie uma função que verifique qual dos dois jogadores tem mais pontos acessando um dicionário.
  • Crie um cifro, um sistema de troca de uma string por outra para criar um código "secreto".Por exemplo, a letra "A" pode ser trocada por "G", ou a palavra "maçã" pode ser trocada por "laranja".

Dicionários e pares()

pairs() é uma função que é frequentemente usada para iterar por dicionários . Um exemplo é visto abaixo.


local myDictionary = {
["Blue Player"] = "Ana",
["Gold Player"] = "Binh",
["Red Player"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " is " .. value)
end

pairs() pode ser usado para trabalhar com a chave, o valor ou ambos de um elemento dicionário.No loop for abaixo, a primeira variável é a chave.A segunda variável é o valor.O dicionário com o qual você deseja trabalhar é passado para pairs() .


local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("You have:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Ao ser executado, o código imprimirá o seguindo:


You have:
43 Gold Bricks
3 Carrots
2 Torches

Sumário

Dicionários são tabelas que usam pares de chave-valor em vez de valores indexados.Dicionários e arrays começam de forma semelhante atribuindo curly brackets a uma variável.Mantenha entradas separadas com vírgulas.

Todas as chaves dentro de um dicionário devem usar o mesmo digitarde dados, mas os valores podem misturar tipos de dados sem problemas.

A maneira pela qual um dicionário é acessado pode transmitir seu propósito.Um dicionário de propriedades inimigas provavelmente será acessado com o operador ponto, enquanto uma lista de nomes provavelmente usará tableName[keyName].

Ao usar parênteses, tenha cuidado; os nomes de chave criados dentro da tabela devem ser tratados como strings: tableName["keyName"] .No entanto, ao referenciar objetos como partes, as citações não são necessárias: tableName[keyName] .

Muitos scripts precisam passar por dicionários ou arrays, mas você pode nem sempre saber o começo e o fim dessas estruturas de dados.Por exemplo, um dicionário de jogadores pode estar mudando ou os jogadores podem ter um inventário de arrays de tamanhos variados.

Nessas situações, você pode usar pairs() e ipairs() em um ciclo for para percorrer cada elemento sem pontos de início e fim conhecidos.Você também pode usar uma iteração geral através da palavra-chave in para percorrer os elementos sem a necessidade de pairs() ou ipairs().