Sıralar

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

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.

Düzenli bir sıra ekler, okur ve öğeleri kaldırır nasıl sırası

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

Bir öğenin ayarlanan önceliği, sırayın öğeleri okuma sırasını değiştirir

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 ekleyin
myQueue:enqueue(5)
myQueue:enqueue(10)
myQueue:enqueue(15)
-- benimSıra = { 5, 10, 15 }
-- Sıradan bir değer kaldırın
local first = myQueue:dequeue()
print("The first value added to the queue was", first)
-- benimSıra = { 10, 15 }
-- Sıraya daha fazla değer ekleyin
myQueue:enqueue(20)
myQueue:enqueue(25)
myQueue:enqueue(30)
-- benimSıra = { 10, 15, 20, 25, 30 }
-- Sıradan bir değer daha kaldırın
local second = myQueue:dequeue()
print("The second value added to the queue was", second)
-- myQueue = { 15, 20, 25, 30 }