Apporta modifiche agli array

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Il contenuto di un vettoredovrà spesso essere modificato, come quando è necessario rimuovere un oggetto dall'Inventario, reportoriodi un Giocatore.Luau ha funzioni integrate per l'uso con le tabelle per rendere questo più semplice.

Questo articolo descriverà le funzioni precompilate per tabelle come aggiungi e rimuovi mentre descrivi come cercare un valore.

Per applicare queste abilità, creerai uno script che aiuta a gestire l'inventario di un Giocatorein una Gioco.

Aggiungi valori agli array

Per aggiungere un nuovo valore a un vettore, usa table.insert(array, valueToInsert) .Il secondo parametro può essere qualsiasi valore come una Stringa, un numero o un intero oggetto, come Player o IntValue .

Per praticare, creerai uno script che memorizza gli oggetti del giocatore in una tabella, quindi aggiungerai a esso.Poiché questo esempio è solo uno script, può essere utilizzato con qualsiasi file o progetto.Il test del codice verrà eseguito utilizzando la finestra di output.

  1. Crea un array vuoto chiamato playerItems .


    playerItems = {}
  2. Aggiungi oggetti inventario all'array digitando table.insert() .Nella parentesi, digita playerItems , la tabella da aggiungere, seguita da una stringa per ogni Articolo.Inserisci almeno tre valori.


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping Bag")
    print(playerItems)
  3. Esegui il progetto. In Output, espandi i tre punti ... per vedere la tabella stampata.

Rimuovi i valori dagli array

Per rimuovere un valore, come se un giocatore usasse un oggetto o qualcuno in una lista di giocatori attivi lascia un'esperienza, usa table.remove() .A seconda dei parametri forniti, la funzione può rimuovere l'ultimo valore di una tabella o in un indice specifico.

Rimuovi l'ultimo valore

A volte uno script deve rimuovere un Articolospecifico.Ad esempio, rimuovere il primo oggetto nell'Inventario, reportoriodi un Giocatoreo scegliere il primo giocatore in una lista.Per rimuovere l'ultimo valore in un vettore, usa table.remove(arrayName) .In questo caso d'uso, il solo parametro necessario è la tabella stessa.

  1. Usa l'array di elementi dall'esempio precedente. Quindi, per rimuovere l'ultimo valore dalla tabella, in questo caso "Sleeping Bag", digita table.remove(playerItems)


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems)
    print(playerItems)
  2. Esegui il progetto. Nella finestra di output, l'ultimo valore, "Sleeping Bag", non dovrebbe stampare.

Rimuovi per indice

Per rimuovere un valore a un punto specifico nell'vettore, inserisci nel secondo parametro l'indice da Rimuovere, come table.remove(arrayName, 1) .

  1. Usando la stessa tabella, digita table.remove() . Nei parametri, inserisci il nome della tabella e 1 , il valore da Rimuovere.


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems, 1)
  2. Esegui il progetto. Controlla che il primo valore, "Pozione" è stato rimosso.

Cerca i valori in un vettore

Per trovare valori specifici in array, come il nome di un Giocatorevincitore, usa la funzione table.find().In alternativa, puoi codificare la tua funzione di ricerca utilizzando for loop e if dichiarazioni.

Trova e restituisci un singolo valore

Per trovare un valore in un vettore, crea una funzione chiamata findValue() che attraversa un array e si ferma la prima volta che trova un valore corrispondente.

Una volta trovato il valore, la funzione utilizzerà la parola chiave return per restituire l'indice del valore. Con un indice, puoi rimuoverlo dall'vettore.

  1. Copia l'array chiamato playerItems qui sotto.


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. Codifica una nuova funzione chiamata findValue() con due parametri:

    • whichArray - l'array da cercare attraverso.

    • itemName - la stringa specifica da controllare.


      local function findValue(whichArray, itemName)
      end
  3. In findValue() , usa un ciclo while per controllare se qualsiasi valore nell'array corrisponde a itemName .Se il valore corrisponde, usa la parola chiave return per restituire il valore trovato in currentIndex .


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    return currentIndex
    end
    end
    end
  4. Prova la funzione di ricerca creando una variabile chiamata valueFound e chiamando findValue().Passa nell'array per Cercaree quale valore dovrebbe cercare. Esegui il codice per confermare che l'output previsto è l'indice 2.


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    --Invia il valore di currentIndex Indietro
    return currentIndex
    end
    end
    end
    local valueFound = findValue(playerItems, "Bread")
    print("The value is at index " .. valueFound)

Rimuovi un valore

Se un valore è stato trovato utilizzando la funzione find, può essere rimosso. Controlla se un valore è stato trovato con una dichiarazione if.

  1. Verifica se un valore è all'interno di valueFound ; se è così, rimuovi il valore utilizzando table.remove() .


    if valueFound then
    table.remove(playerItems, valueFound)
    end
  2. Stampa l'array utilizzando il codice seguente.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  3. Playtest e controlla che il primo valore "Bread" è stato rimosso dall'vettore.Prova a rimuovere altri valori cambiando il secondo parametro in findValue() .

    Nota che poiché questa funzione è stata chiamata una volta, solo la prima istanza di "Bread" è stata rimossa.La sezione seguente tratterà come trovare e rimuovere tutte le istanze.

Trova e rimuovi tutto un valore specifico

Mentre il codice precedente poteva rimuovere solo la prima istanza di un valore trovato, questo snippet di codice troverà e rimuoverà tutte le occorrenze da un vettore.Ad esempio, se, diciamo, un giocatore volesse vendere tutto il suo pane in un Negozioin gioco.

  1. Usa un array chiamato playerItems con almeno quattro valori e un set di duplicati .


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. Per percorrere l'vettore, crea un ciclo while che va all'indietro attraverso playerItems , iniziando a #playerItems , terminando a 1 e aumentando di -1.


    for index = #playerItems, 1, -1 do
    end
  3. Nel ciclo, usa una dichiarazione if per controllare se il valore all'interno di playerItems[index] è uguale a "Bread" e, se è così, rimuovi l'Articolo.


    for index = #playerItems, 1, -1 do
    if playerItems[index] == "Bread" then
    table.remove(playerItems, index)
    end
    end
  4. Usa il codice qui sotto per aggiungere un secondo ciclo while che stampa l'vettore.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  5. Esegui lo script e controlla che tutti i valori nominati "Pane" vengono rimossi.

Sommariamente

I valori possono essere rimossi o aggiunti a un vettore, ma fai attenzione agli spostamenti degli indici che lo fanno.Usa i cicli per iterare attraverso una tabella per rimuovere tutte le istanze di un valore, o solo la prima istanza trovata.

La parola chiave return può essere utilizzata per interrompere un ciclo e inviare le informazioni dove necessario.

Una versione finale dello script può essere citata qui sotto.

Il seguente progetto include tutti gli script in questo Tutoriale. Scarica qui .

Nota tutti gli script sono in ServerScriptService e disabilitati .Per utilizzare uno script, nelle sue proprietà, deseleziona il campo Disabilitato e esegui Studio.