Tabela

*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.

Właściwości tabeli danych mogą przechować wiele wartości dowolnego typu, które nie są nil, w tym booleany, 2> liczby2>, 5> łańcuchy5>, 8> funkcje8> i inne tabeli. Konstruuj tabelki z podwójnymi nawiasami ( 1> 1>):


-- Zbuduj pusty stół przypisany zmiennej "t"
local t = {}
print(t) -- {}

Możesz używać tabeli jako 阵列 lub dictionnaire. Arrays używają listy liczb jako indeksy, ale słowniki mogą mieć liczby, strójne listy i obiekty jako indeksy.

For more information on built-in functions for working with tables, see the table library.

Materiały

массив jest listą sortowaną wartości. Masywy są użyteczne do przechowywania zbiorów danych, takich jak grupa graczy z specjalnymi uprawnieniami.

Tworzenie matryk

Aby utworzyć matrykę używając tabeli Luau, deklaruj wartości w kolejności, oddzielone przez przecinki.


-- Konstruuj wielokolorową matrykę z trzema elementami
local testArray = {"A string", 3.14159, workspace.Camera}
print(testArray)

Czytanie z wymiarów

Aby przeczytać z wymiaru, dodaj pary nawiasów kuśników po jego odniesieniu i określ numer indeksu elementu wewnątrz ( [pos] ):


-- Konstruuj wielokolorową matrykę z trzema elementami
local testArray = {"A string", 3.14159, workspace.Camera}
print(testArray[1]) -- ciąg
print(testArray[2]) -- 3.14159
print(testArray[3]) -- Camera

Pisanie do maszyny

Aby zdefiniować lub ponownie napisać wartość wiersza w indeksie, zaznacz numer indeksu w określonych nawiasach ([index] ) następnie = i wartość:


local testArray = {"A string", 3.14159, workspace.Camera}
testArray[2] = 12345
testArray[4] = "New string"
print(testArray[2]) --12345
print(testArray[4]) -- New string

Przeglądanie matryc

Aby przetworzyć wielokolorowy массив, możesz użyć pętli for. Ponieważ masz wielokolorowe wskaźniki, możesz również użyć liczbowego for pętli od 1 do długości maszyny (1># array1>).


local testArray = {"A string", 3.14159, workspace.Camera, "New string"}
-- Pętla używająca ogólnej inkrementacji
for index, value in testArray do
print(index, value)
end
-- Przy użyciu operatora długości matryцы (#)
for index = 1, #testArray do
print(index, testArray[index])
end
--[[ Wyświetlany wynik:
1 A string
2 3.14159
3 Camera
4 New string
1 A string
2 3.14159
3 Camera
4 New string
]]

Układanie pozycji

Są dwa wbudowane sposoby na wstawienie pozycji na końcu end maszyny:

  • Przekaż odniesienie do wartości wiersza i wartości przedmiotu do funkcji table.insert() Luau.
  • Dodaj nowy pozycji do arkusza używając array[# array+1 >>>> syntax.

local testArray = {"A string", 3.14159}
table.insert(testArray, "New string")
testArray[#testArray+1] = "Another new string"
print(testArray[3]) -- Nowa ciąg
print(testArray[4]) -- Another new string

Aby wstawić pozycję między początkiem i końcem wielu wymiarów, włącz wartość pozycji jako drugą argument table.insert() . To wstawia nową pozycję i nacisną następujące pozycje o jeden pozycji indeksu.


local testArray = {"First item", "Next item"}
table.insert(testArray, 2, "NEW ITEM #2")
print(testArray[1]) -- Pierwszy przedmiot
print(testArray[2]) -- NOWY PRZEDMIOT #2
print(testArray[3]) -- Next item

Usuwanie elementów

Aby usunąć pozycję z wymiaru, użyj table.remove(). To usuwa pozycję w określonym miejscu i przesuwa następne pozycje o jeden pozycji wskaźniku.


local testArray = {"First item", "Next item", "Last item"}
table.remove(testArray, 2)
print(testArray[1]) -- Pierwszy przedmiot
print(testArray[2]) -- Last item

Słowniki

Słowniki są rozszerzeniem maszyny wątku. Słowniki przechowują zbiór pary klucz/wartość, gdzie klucze mogą być dowolną liczbą, ciąglub obiektem.

Tworzenie słowników

Aby utworzyć tabelę słownika, zdefiniuj każdą klucz następujący przez = i wartość . Rozdziel każdą p parę klucz-wartości 2>z przecinkiem2>.


local testDictionary = {
FruitName = "Lemon",
FruitColor = "Yellow",
Sour = true
}

Klucze do słowników mogą być liczbami, łańcuchami i obiektami. Na przykład, klucz może być również Instance . Aby używać obiektów jako kluczy, deklaruj klucz w nawiasach kwadratowych ( [key] ):


local part = Instance.new("Part")
local testDictionary = {
PartType = "Block",
[part] = true
}

Czytanie z Dictionaries

Aby czytać z słownika, dodaj pary nawiasów po jego odniesieniu i określ nazwę klucza. bezpośrednio odniesienie się do klucza strungowego używając cytatów ( ["key"] ) lub użyj zmiennej wartości ( [key] ).


local part = Instance.new("Part")
local testDictionary = {
PartType = "Block",
[part] = true
}
-- Włącz cytaty dla kluczy strunowych
print(testDictionary["PartType"]) -- Zablokuj
-- Omituj cytaty dla kluczy niestringowych
print(testDictionary[part]) -- true

Pisanie do słowników

Aby zdefiniować lub ponownie napisać wartość nowego lub istniejącego klucza słownika, zaznacz nazwę klucza w nawiasach ( [key] ) następnie = i wartość:


local testDictionary = {
FruitName = "Lemon",
Sour = true
}
-- Zmień wartość istniejących kluczy
testDictionary["FruitName"] = "Cherry"
testDictionary["Sour"] = false
-- Utwórz nową parę klucz-wartość
testDictionary["FruitCount"] = 10
print(testDictionary["FruitName"]) -- Wiśnia
print(testDictionary["Sour"]) -- fałszywy
print(testDictionary["FruitCount"]) -- 10

iterowanie nad słownikami

Aby przetworzyć słownik, użyj globalnej funkcji pairs() w pętli for:


local testDictionary = {
FruitName = "Lemon",
FruitColor = "Yellow",
Sour = true
}
for key, value in pairs(testDictionary) do
print(key, value)
end
--[[ Wyświetlany wynik:
FruitName Lemon
Sour true
FruitColor Yellow
]]

Usuwanie pary kluczowych

Aby usunąć lub usunąć pary wartości kluczowych z słownika, ustaw jego wartość dla klucza na nil .


local testDictionary = {
FruitName = "Lemon",
FruitColor = "Yellow",
Sour = true
}
testDictionary["Sour"] = nil
for key, value in pairs(testDictionary) do
print(key, value)
end
--[[ Wyświetlany wynik:
FruitName Lemon
FruitColor Yellow
]]

Tabela jako odniesienie

Jeśli zapiszesz tabelę w nowej zmiennej, Luau nie tworzy kopii tej tabeli. Zamiast tego zmienne staje się odwołaniem lub wskazówką do oryginalnej tabeli. Każde odwołanie do tabeli odzwierciedla jakiekolwiek zmiany w oryginalnej tabeli:


local originalArray = {10, 20}
local arrayReference = originalArray
print("Original:", originalArray[1], originalArray[2])
print("Reference:", arrayReference[1], arrayReference[2])
-- Zmień wartości w oryginalnym массиве
originalArray[1] = 1000
originalArray[2] = 2000
print("Reference:", arrayReference[1], arrayReference[2])
--[[ Wyświetlany wynik:
Original: 10 20
Reference: 10 20
Reference: 1000 2000
]]

Klonowanie Tabel

Głębokie klony

Aby skopiować tabelę bez żadnych podmiotów w tabeli, Luau oferuje metodę table.clone().


local original = {
key = "value",
engine = "Roblox",
playerID = 505306092
}
local clone = table.clone(original)

Głębokie klony

Aby skopiować bardziej złożony stół z pędzącymi w nim tabelami, będziesz musiał użyć funkcji recursyjnej podobnej do obserwuje:


-- Funkcja używana do głębokiego kopiowania tabeli
local function deepCopy(original)
-- Definiuj nową tabelę dla kopii
local copy = {}
-- Przełącz się poprzez oryginalną tabelę, aby sklonować
for key, value in original do
-- Jeśli typ wartości jest tabelą, głęboko skopiuj go do klucza (indeksu)
-- Else (lub) typ nie jest tabelą, przypisz wartość domyślną dla indeksu
copy[key] = type(value) == "table" and deepCopy(value) or value
end
-- Zwróć sklonowaną wersję głębokiej tabeli
return copy
end

Z funkcją w miejscemożesz zrobić głęboką kopię, która wygląda następująco:


local original = {
key = "value",
playerInfo = {
playerID = 505306092,
playerName = "PlayerName"
},
otherInfo = {
{
{1, 3, 5, 7, 9}
}
}
}
local clone = deepCopy(original)

Zamrażające Tabel

Zamrażanie stolika sprawia, że jest ono tylko czytelne, co jest użyteczne do tworzenia stałych wartości, które nie chcesz zmieniać. Zamrażanie jest stałe; nie ma metody "roz zamrażania" lub "roz zamrażania". Aby sprawdzić, czy stolik jest zamrożony, użyj table.isfrozen() .

Płytkie zamraża

Aby zamrozić tabelę bez żadnych podmiotów w tabeli, Luau oferuje metodę table.freeze().


local target = {
key = "value",
engine = "Roblox",
playerID = 505306092
}
table.freeze(target)
target.playerID = 1 --> attempt to modify a readonly table

Głęboki zamraż

Aby zamrozić bardziej złożony stół z wbudowanymi w nim stółami, użyj funkcji recursyjnej podobnej do obserwuje:


local function deepFreeze(target)
-- Pozwól tabeli się załamać
table.freeze(target)
-- Sprawdź każdy klucz w tabeli i zamroź go, jeśli jest to tabela
for _, v in target do
if type(v) == "table" then
deepFreeze(v)
end
end
end

Z funkcją w miejscemożesz zamrozić tabelę w następujący sposób:


local target = {
key = "value",
playerInfo = {
playerID = 505306092,
playerName = "PlayerName"
},
otherInfo = {
{
{1, 3, 5, 7, 9}
}
}
}
deepFreeze(target)
target.playerInfo.playerID = 1 --> attempt to modify a readonly table