Wprowadzenie do słowników

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Słowniki to tabele, które łączą nazwy lub klucze z wartością zamiast indeksu.

Przykład:

Składnia słownika Luau

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

Używaj słowników, gdy musisz etykietować wartości, a nie tylko je wymieniać, jak robi to tablica. Poćwicz korzystanie z słowników w tym samouczku, manipulując wartościami związanymi z graczem.

Składnia słownika

Podobnie jak tablice, słowniki są przypisywane do zmiennej za pomocą nawiasów klamrowych {}. Pary klucz-wartość są przechowywane w osobnych linijkach, po których następuje przecinek. Klucze i wartości mogą być dowolnym typem danych, w tym ciągami, liczbami i nazwami zmiennych.


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

Aby odwołać się do części lub innych obiektów instancji jako kluczy, użyj nawiasów.


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

Tworzenie słownika

Jednym z codziennych zastosowań słowników jest organizowanie informacji o graczach lub postaciach. Te kroki eksplorują, jak teoretyczne informacje o postaci wroga mogą być przechowywane i uzyskiwane.

  1. W nowym skrypcie utwórz słownik o nazwie enemy.


    local enemy = {
    }
  2. Pierwszy klucz w słowniku będzie śledził imię wroga za pomocą zmiennej o nazwie Name.


    local enemy = {
    Name
    }
  3. Przypisz imię wroga do klucza, po którym następuje przecinek.


    local enemy = {
    Name = "Spike",
    }
  4. Dodaj drugą parę klucz-wartość dla ilości zdrowia, którą powinien mieć wróg. Pamiętaj, klucze powinny zawsze używać tego samego typu danych, ale wartości nie muszą.


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

Używanie wartości słownika

Istnieją dwa sposoby dostępu do wartości słownika:

  • tableName["keyName"] (ważne, aby zwrócić uwagę na cudzysłowy)
  • tableName.keyName

local enemy = {
Name = "Spike",
Health = 1000,
}
print("Złoczyńca " .. enemy["Name"] .. " zbliża się!")
print("Złoczyńca " .. enemy.Name .. " zbliża się!")

Który styl używać, zazwyczaj zależy od celu tabeli. W przypadku tabel przechowujących zbiór wartości, takich jak lista graczy na serwerze, programiści zazwyczaj używają tableName["keyName"]. W przypadku słownika używanego do opisu obiektu programiści częściej używają tableName.keyName.

Zmień wartość słownika

Zmiana wartości klucza jest taka sama jak w przypadku dowolnej innej zmiennej; użyj operatora równości =.

  1. Pod tabelą enemy ustaw imię wroga na coś innego.


    local enemy = {
    Name = "Spike",
    Health = 1000,
    }
    enemy.Name = "Rana"
    print("Imię wroga to " .. enemy.Name)
  2. Przeprowadź test i sprawdź okno wyjściowe.

Istniejące zmienne jako klucze

Słowniki mogą współdziałać z istniejącymi zmiennymi zadeklarowanymi w innych częściach skryptu. Następujący przykład kodu używa zmiennej, aby dodać nazwę gracza jako klucz, gdy dołącza on do doświadczenia, a następnie ustawia wartość jego punktów na 0.

  1. W ServerScriptService stwórz nowy skrypt o nazwie PlayerPoints. W skrypcie pobierz Serwis Graczy i utwórz pusty słownik o nazwie playerPoints.


    local Players = game:GetService("Players")
    local playerPoints = {
    }
  2. Napisz lokalną funkcję do ustawiania punktów gracza z parametrem dla nowej zmiennej gracza. Połącz funkcję z zdarzeniem Players.PlayerAdded.


    local playerPoints = {
    }
    local function setPoints(newPlayer)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. W funkcji dodaj zmienną, aby uzyskać Name gracza, właściwość w każdym obiekcie Player, oraz polecenie drukowania do testowania.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("Witaj " .. name)
    end
  4. Wstaw name do słownika playerPoints jako klucz i ustaw wartość, punkty gracza, na 0.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("Witaj " .. name)
    playerPoints[name] = 0
    end
  5. Użyj name, aby wydrukować nazwę gracza, a playerPoints[name], aby wydrukować wartość klucza odpowiadającego zmiennej.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("Witaj " .. name)
    playerPoints[name] = 0
    print(name .. " ma " .. playerPoints[name] .. " punktów.")
    end
  6. Uruchom projekt i obserwuj wyjście.

Zakończony skrypt

local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("Witaj " .. name)
playerPoints[name] = 0
print(name .. " ma " .. playerPoints[name] .. " punktów.")
end
Players.PlayerAdded:Connect(setPoints)

Opcjonalne wyzwania

Poniżej znajdują się wyzwania, które dotyczą używania słowników na różne sposoby. Sprawdź, czy potrafisz rozbudować kod dla tych zadań.

  • Stwórz część pułapki, która zadaje obrażenia w czasie. Gdy gracz dotknie pułapki, zadaj mu obrażenia, poczekaj, a następnie pozwól mu na ponowne zranienie.
  • Stwórz funkcję, która sprawdza, który z dwóch graczy ma najwięcej punktów, uzyskując dostęp do słownika.
  • Stwórz szyfr, system zamiany jednego ciągu na inny, aby stworzyć "sekretny" kod. Na przykład, literę "A" można zamienić na "G", lub słowo "jabłko" można zamienić na "pomarańcza".

Słowniki i pairs()

pairs() to funkcja, która często jest używana do iteracji przez słowniki. Przykład jest pokazany poniżej.


local myDictionary = {
["Niebianski Gracz"] = "Ana",
["Złoty Gracz"] = "Binh",
["Czerwony Gracz"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " to " .. value)
end

pairs() można używać do pracy z kluczem, wartością lub obydwoma elementami słownika. W poniższej pętli for pierwsza zmienna to klucz. Druga zmienna to wartość. Słownik, z którym chcesz pracować, jest przekazywany do pairs().


local inventory = {
["Złote Cegły"] = 43,
Marchewki = 3,
Trochę = 2,
}
print("Masz:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Po wykonaniu, kod wydrukuje:


Masz:
43 Złote Cegły
3 Marchewki
2 Trochę

Podsumowanie

Słowniki to tabele, które używają par klucz-wartość zamiast wartości indeksowanych. Słowniki i tablice zaczynają się podobnie, przypisując nawiasy klamrowe do zmiennej. Zachowuj wpisy oddzielone przecinkami.

Wszystkie klucze w słowniku powinny używać tego samego typu danych, ale wartości mogą mieszać typy danych bez problemu.

Sposób, w jaki uzyskuje się dostęp do słownika, może przekazać jego cel. Słownik właściwości wroga prawdopodobnie będzie uzyskiwany przy użyciu operatora kropkowego, podczas gdy lista nazw prawdopodobnie użyje tableName[keyName].

Kiedy używasz nawiasów, bądź ostrożny; nazwy kluczy utworzone w tabeli muszą być traktowane jako ciągi: tableName["keyName"]. Jednak gdy odnosisz się do obiektów, takich jak części, cudzysłowy nie są potrzebne: tableName[keyName].

Wiele skryptów musi przechodzić przez słowniki lub tablice, ale nie zawsze możesz znać początek i koniec tych struktur danych. Na przykład słownik graczy może się zmieniać, lub gracze mogą mieć tablicę ekwipunku o zmiennej wielkości.

W takich sytuacjach możesz używać pairs() i ipairs() w pętli for, aby przejść przez każdy element bez znanych punktów początkowych i końcowych. Możesz również używać ogólnej iteracji za pomocą słowa kluczowego in, aby przechodzić przez elementy bez potrzeby używania pairs() lub ipairs().

©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.