Sıra, bir koleksiyonla birlikte lineer bir veri yapısıdır.Roblox'ta iki tür sıra vardır: düzenli sıralar, ilk giren ilk çıkan (FIFO) prensibini takip eder ve öncelikli sıralar, sıradaki öğelerin veri erişim sırasını belirleyen önceliklere sahiptir.Her iki sıra türündeki öğeler herhangi bir Luau veri türü olabilir.
Sıra, kalıcı olmayan veri depolama hizmetine adlandırılan için yerleşik işlevleri doğrudan çağırarak bir sıra almak ve eklemek, okumak veya kaldırmak için verileri sıraya eklemek için kullanabilirsiniz.Deneyiminizde görevleri planlamak ve istekleri ele almak gibi diğer herhangi bir kullanım için, sahip olbaşına sıralar uygulamak için tablolar kullanabilirsiniz.
Düzenli sıralar
Düzenli sıralar, tüm öğelerin sırayın arkasına eklenmesi ve arka arkaya aynı sırayla okunması veya kaldırılması gibi şekilde FIFO sırasında korunur.

Öncelik sıraları
Öncelik sıraları, her bir öğenin okunma veya kaldırılma sırasını gösteren bir öncelik numarasıyla eklenebildiği FIFO kuralını takip etmiyor.Öncelik sırasının arkasındaki öğe varsayılan önceliği 0'a sahiptir ve sıranın önündeki öğe, aşağıdaki örnekte olduğu gibi en yüksek ayarlanmış önceliğe sahiptir, ki bu 5'tir.

Bu örnek için, 3'lü bir önceliğe sahip bir öğe bir sıraya ekleniyor.Sıra, yeni öğeyi 3 veya daha fazla önceliğe sahip mevcut tüm öğelerin arkasına yerleştirir.Bir öğeyi sırayın önüne yerleştirmek için, mevcut en yüksek set önceliğinden daha yüksek bir öncelik ayarlamanız gerekir.Bu örnekte, önceliği 6 veya daha yükseğe ayarlamanız gerekir.
Öncelik sıraları, öncelik sırasına göre değil, önem sırasına göre veri okumak veya erişmek istediğiniz durumlarda yararlıdır.Bir öğe eklerken bir öncelik sayısı olarak ayarlayabilir ve sıra daha düşük öncelikli öğelerden önce daha yüksek öncelikli öğeleri işleyebilir.Örneğin, uzun süredir bekleyen kullanıcılara daha yüksek öncelikler atayarak eşleşme için öncelik sıralarını kullanabilirsiniz.
Sıraları uygula
Yerleşik sıraları MemoryStoreService veya tüm diğer kullanımlar için sıralar uygulamak için tabloları kullanabilirsiniz.Aşağıdaki kod örneği, uygulamanın bir düzenli sıraya sahip olduğunu gösterir.Deneyiminiz için bu uygulamayı kullanmak için, bunu bir ModuleScript olarak kaydetmeli ve ReplicatedStorage 'da saklamalısınız, böylece sıranız hem istemci hem de sunucu için erişilebilir olur.
Tablo Kullanarak Düzenli Bir Sıra Uygulama
--!sıkıntılı
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
-- Sıra boş mu kontrol edin
function Queue.isEmpty<T>(self: Queue<T>)
return self._first > self._last
end
-- Sıraya bir değer ekleyin
function Queue.enqueue<T>(self: Queue<T>, value: T)
local last = self._last + 1
self._last = last
self._queue[last] = value
end
-- Sıradan bir değeri kaldırın
function Queue.dequeue<T>(self: Queue<T>): T
if self:isEmpty() then
error("Cannot dequeue from empty queue")
end
local first = self._first
local value = self._queue[first]
self._queue[first] = nil
self._first = first + 1
return value
end
return Queue
Aşağıdaki kod örneği, Script altında bir kullanım örneğidir Workspace .Önceki uygulama kod örneğini doğru sakladığınız sürece, kodu, yazve depolama konumunu kendi kullanımınıza uyacak şekilde değiştirebilirsiniz, sürece önceki uygulama kod örneği doğru saklanmıştır.
Düzenli Sıra Kullanım Örneği
local ReplicatedStorage = game:GetService("ReplicatedStorage")local Queue = require(ReplicatedStorage:WaitForChild("Queue"))local myQueue = Queue.new()-- Sıraya bazı değerler ekleyinmyQueue:enqueue(5)myQueue:enqueue(10)myQueue:enqueue(15)-- benimSıra = { 5, 10, 15 }-- Sıradan bir değer kaldırınlocal first = myQueue:dequeue()print("The first value added to the queue was", first)-- benimSıra = { 10, 15 }-- Sıraya daha fazla değer ekleyinmyQueue:enqueue(20)myQueue:enqueue(25)myQueue:enqueue(30)-- benimSıra = { 10, 15, 20, 25, 30 }-- Sıradan bir değer daha kaldırınlocal second = myQueue:dequeue()print("The second value added to the queue was", second)-- myQueue = { 15, 20, 25, 30 }