Code di accesso

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

Una coda è una struttura dati lineare con una collezione di elementi. Ci sono due tipi di code su Roblox: code regolari, che seguono il principio del primo arrivato, primo servito (FIFO), e code di priorità, che hanno priorità per gli elementi nella coda che determinano l'ordine di accesso ai dati. Gli elementi in entrambi i tipi di code possono essere di qualsiasi tipo di dato Luau.

La coda è una struttura dati incorporata del servizio di memoria non persistente chiamato MemoryStoreService, per il quale puoi chiamare direttamente le funzioni incorporate per ottenere una coda e aggiungere, leggere o rimuovere dati dalla coda. Per qualsiasi altro utilizzo, come pianificare attività e gestire richieste nel tuo gioco, puoi utilizzare le tabelle per implementare code in modo autonomo.

Code regolari

Le code regolari sono mantenute nella sequenza FIFO, in cui tutti gli elementi vengono aggiunti alla fine della coda e letti o rimossi nello stesso ordine in cui sono stati aggiunti, dalla parte anteriore a quella posteriore.

L'ordine in cui una coda regolare aggiunge, legge e rimuove elementi

Code di priorità

Le code di priorità non seguono la regola FIFO, in cui ogni elemento può essere aggiunto con un numero di priorità che indica il suo ordine di lettura o rimozione. L'elemento alla fine di una coda di priorità ha la priorità predefinita di 0, e l'elemento all'inizio della coda ha la priorità più alta impostata, che è 5 nel seguente esempio.

La priorità impostata di un elemento cambia l'ordine in cui una coda legge gli elementi

Per questo esempio, un elemento con una priorità impostata di 3 viene aggiunto a una coda. La coda posiziona il nuovo elemento dietro tutti gli elementi esistenti con una priorità impostata di 3 o superiore. Per posizionare un elemento all'inizio della coda, è necessario impostare la priorità più alta rispetto all'attuale priorità impostata più alta. In questo esempio, è necessario impostare la priorità a 6 o superiore.

Le code di priorità sono utili per situazioni in cui desideri leggere o accedere ai dati in base all'ordine di importanza anziché all'ordine in cui sono stati aggiunti. Puoi impostare una priorità come un intero quando aggiungi un elemento, e la coda elabora gli elementi con priorità più alta prima degli elementi con priorità più bassa. Ad esempio, puoi utilizzare le code di priorità per il matchmaking assegnando priorità più alte agli utenti che aspettano da più tempo.

Implementare le code

Puoi utilizzare le code incorporate di MemoryStoreService o utilizzare tabelle per implementare code per tutti gli altri utilizzi. Il seguente esempio di codice mostra l'implementazione di una coda regolare. Per utilizzare questa implementazione nel tuo gioco, dovresti salvarla come ModuleScript e memorizzarla in ReplicatedStorage, in modo che la tua coda sia accessibile sia al client che al server.

Implementazione di una coda regolare utilizzando le tabelle

--!strict
local Queue = {}
Queue.__index = Queue
export type Queue<T> = typeof(setmetatable(
{} :: {
_first: number,
_last: number,
_queue: { T },
},
Queue
))
function Queue.new<T>(): Queue<T>
local self = setmetatable({
_first = 0,
_last = -1,
_queue = {},
}, Queue)
return self
end
-- Controlla se la coda è vuota
function Queue.isEmpty<T>(self: Queue<T>)
return self._first > self._last
end
-- Aggiungi un valore alla coda
function Queue.enqueue<T>(self: Queue<T>, value: T)
local last = self._last + 1
self._last = last
self._queue[last] = value
end
-- Rimuovi un valore dalla coda
function Queue.dequeue<T>(self: Queue<T>): T
if self:isEmpty() then
error("Impossibile rimuovere dalla coda vuota")
end
local first = self._first
local value = self._queue[first]
self._queue[first] = nil
self._first = first + 1
return value
end
return Queue

Il seguente esempio di codice è un esempio di utilizzo come Script sotto Workspace. Puoi modificare il codice, il tipo e la posizione di memorizzazione per adattarli ai tuoi utilizzi, purché tu abbia il precedente codice di implementazione correttamente memorizzato.

Esempio di utilizzo di una coda regolare

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Queue = require(ReplicatedStorage:WaitForChild("Queue"))
local myQueue = Queue.new()
-- Aggiungi alcuni valori alla coda
myQueue:enqueue(5)
myQueue:enqueue(10)
myQueue:enqueue(15)
-- myQueue = { 5, 10, 15 }
-- Rimuovi un valore dalla coda
local first = myQueue:dequeue()
print("Il primo valore aggiunto alla coda era", first)
-- myQueue = { 10, 15 }
-- Aggiungi altri valori alla coda
myQueue:enqueue(20)
myQueue:enqueue(25)
myQueue:enqueue(30)
-- myQueue = { 10, 15, 20, 25, 30 }
-- Rimuovi un altro valore dalla coda
local second = myQueue:dequeue()
print("Il secondo valore aggiunto alla coda era", second)
-- myQueue = { 15, 20, 25, 30 }
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.