Treść matrycy często będzie musiała zostać zmieniona, jak w przypadku potrzeby usunięcia przedmiotu z wyposażeniegracza.Luau ma wbudowane funkcje do użycia z tablicami, aby ułatwić to zadanie.
Ten artykuł przedstawi gotowe funkcje dla tablic takich jak dodaj i usuń, opisując sposób wyszukiwania wartości.
Aby zastosować te umiejętności, utworzysz skrypt, który pomoże zarządzać ekwipunkiem gracza w grze.

Dodaj wartości do tablicy przypadków
Aby dodać nową wartość do matrycy, użyj table.insert(array, valueToInsert).Drugi parametr może być dowolną wartością, taką jak ciąg, liczba lub cały obiekt, tak jak Player lub IntValue.
Aby praktykować, utworzysz skrypt, który przechowuje przedmioty gracza w tabeli, a następnie dodasz do niego.Ponieważ ten przykład jest tylko skryptem, można go używać z dowolnym plikiem lub projektem.Testowanie kodu zostanie wykonane za pomocą okna wyjściowego.
Stwórz pustą matrycę o nazwie playerItems.
playerItems = {}Dodaj przedmioty z ekwipunku do matrycy, wpisując table.insert().W nawiasie, wpisz playerItems , tabelę do dodania, po której następuje ciąg dla każdego elementu.Wpisz co najmniej trzy wartości.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping Bag")print(playerItems)Wykonaj projekt. W wyniku rozszerz trzy punkty ... w celu zobaczenia wydrukowanej tabeli.
Usuń wartości z tablicy Wartości
Aby usunąć wartość, na przykład, jeśli gracz użył przedmiotu lub ktoś na liście aktywnych graczy opuścił doświadczenie, użyj table.remove().W zależności od dostarczonych parametrów funkcja może usunąć ostatnią wartość tabeli lub na określonym indeksie.
Usuń ostatnią wartość
Czasami skrypt musi usunąć określony element.Na instancja, usunięcie pierwszego przedmiotu w wyposażeniegracza lub wybranie pierwszego gracza na liście.Aby usunąć ostatnią wartość w matrycy, użyj table.remove(arrayName).W tym przypadku użycia jedynym potrzebnym parametrem jest sama tabela.
Użyj array przedmiotów z poprzedniego przykładu. Następnie, aby usunąć ostatnią wartość z tabeli, w tym przypadku "Sleeping Bag", wpisz table.remove(playerItems)
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping bag")table.remove(playerItems)print(playerItems)Wykonaj projekt. W oknie wyjścia ostatnia wartość, "Sleeping Bag", nie powinna się drukować.
Usuń przez indeks
Aby usunąć wartość w określonym punkcie w arkuszu, wprowadź drugi parametr indeks do usuwać, wyjmować, tak jak table.remove(arrayName, 1).
Używając tej samej tabeli, wpisz table.remove(). W parametrach wprowadź nazwę tabeli i 1, wartość do usuwać, wyjmować.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping bag")table.remove(playerItems, 1)Wykonaj projekt. Sprawdź, czy pierwsza wartość, "Potion", została usunięta.
Szukaj wartości w tablicy
Aby znaleźć konkretne wartości w tablicach, takie jak nazwa zwycięskiego gracza, użyj funkcji table.find().Alternatywnie możesz kodować własną funkcję wyszukiwania za pomocą pętli for i oświadczeń if.
Znajdź i zwróć pojedynczą wartość
Aby znaleźć wartość w tablicy, stwórz funkcję o nazwie findValue(), która przechodzi przez tablicę i zatrzymuje się za pierwszym razem, gdy znajduje dopasowaną wartość.
Gdy znajdzie wartość, funkcja użyje kluczowa return znak, aby zwrócić indeks wartości. Z indeksem możesz go usunąć z matrycy.
Kopiuj array o nazwie playerItems poniżej.
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}Zapisz nową funkcję o nazwie findValue() z dwoma parametrami:
whichArray - lista do przeszukiwania.
itemName - konkretna struna do sprawdzenia.
local function findValue(whichArray, itemName)end
W findValue() , użyj pętli for, aby sprawdzić, czy którykolwiek wartość w array pasuje do itemName .Jeśli wartość jest zgodna, użyj słowa kluczowego return, aby zwrócić wartość znalezioną w currentIndex.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName thenreturn currentIndexendendendPrzetestuj funkcję wyszukiwania, tworząc zmienną o nazwie valueFound i wywołując findValue().Przekaż w array do wyszukiwaći jaką wartość powinien wyszukać. Wykonaj kod , aby potwierdzić, że oczekiwany wynik to indeks 2.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName then--Wysyła wartość obecnego indeksu wsteczpowrotemreturn currentIndexendendendlocal valueFound = findValue(playerItems, "Bread")print("The value is at index " .. valueFound)
Usuń wartość
Jeśli wartość została znaleziona za pomocą funkcji find, można ją usunąć. Sprawdź, czy wartość została znaleziona za pomocą oświadczenia if.
Sprawdź, czy wartość jest w granicach valueFound ; jeśli tak, usuń wartość za pomocą table.remove() .
if valueFound thentable.remove(playerItems, valueFound)endWydrukuj array za pomocą kodu poniżej.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endPrzetestuj i sprawdź, czy pierwsza wartość "Bread" została usunięta z matrycy.Spróbuj usunąć inne wartości, zmieniając drugi parametr w findValue().
Zauważ, że ponieważ ta funkcja została wezwana tylko raz, usunięto tylko pierwszą instancję "Bread".Następna sekcja pokaże, jak znaleźć i usunąć wszystkie instancje.
Znajdź i usuń całą określoną wartość
Choć poprzedni kod mógł usunąć tylko pierwszą instancję znalezionego wartości, ten kod snippet znajdzie i usunie wszystkie wystąpienia z listy.Na przykład, jeśli, powiedzmy, gracz chciał sprzedać cały swój chleb w sklepie w grze.
Użyj tablicy o nazwie playerItems z co najmniej czterema wartościami i zestawem duplikatów .
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}Aby przejść przez tablicę, utwórz pętli for, która przechodzi wstecz przez playerItems, zaczynając od #playerItems, kończąc na 1 i zwiększając o -1
for index = #playerItems, 1, -1 doendW pętli użyj oświadczenia if, aby sprawdzić, czy wartość wewnątrz playerItems[index] jest równa "Bread", a jeśli tak, usuń przedmiot.
for index = #playerItems, 1, -1 doif playerItems[index] == "Bread" thentable.remove(playerItems, index)endendUżyj kodu poniżej, aby dodać drugą pętlę, która drukuje tablicę.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endWykonaj skrypt i sprawdź, czy wszystkie wartości o nazwie "Chleb" zostały usunięte.
Podsumowanie
Wartości mogą być usuwane lub dodawane do matrycy, ale uważaj na przesunięcie indeksów, które to robią.Użyj pętli, aby przeszukiwać tabelę, aby usunąć wszystkie instancje wartości lub tylko pierwszą znalezoną instancję.
Słowo kluczowe return może być użyte do zatrzymania pętli i wysłania informacji z powrotem tam, gdzie jest to potrzebne.
Zakończona wersja skryptu może być odwołana poniżej.
Następny projekt obejmuje wszystkie skrypty w tym samouczku. Pobierz tutaj .
Zauważ, że wszystkie skrypty są w ServerScriptService i wyłączone .Aby użyć skryptu, w jego właściwościach, odznacz pole Nieaktywne i uruchom Studio.