Referans
Koleksiyonlar
@motifx/core ile gelen List, Dictionary, NameValuePair ve LinkedList yapılarının API'si ve davranışı.
Çekirdek üç küçük koleksiyon sınıfı dışa aktarır. Reaktif değildirler; reaktif liste için reactive([]) kullanın (Reaktivite). Sorgulama için Koleksiyon Sorguları.
List<T>
Ekleme/çıkarma olayları veren, Set destekli üyelik denetimi yapan dizi sarmalayıcısı.
Örnekte liste, açık notların kimliklerini tutar:
import { List } from "@motifx/core";
const open = new List<number>();
open.ItemAdded = (id) => console.log("açıldı", id);
open.Add(3); // 0 — eklenen öğenin dizini
open.AddBefore(1); // başa ekler
open.Insert(1, 2); // dizine ekler
open.has(3); // true
open.item(0); // 1
open.count; // 3
open.items; // iç dizi (kopya değil)
import { List } from "@motifx/core";
const open = new List();
open.ItemAdded = (id) => console.log("açıldı", id);
open.Add(3); // 0 — eklenen öğenin dizini
open.AddBefore(1); // başa ekler
open.Insert(1, 2); // dizine ekler
open.has(3); // true
open.item(0); // 1
open.count; // 3
open.items; // iç dizi (kopya değil)
| Üye | Açıklama |
|---|---|
Add(item) |
Sona ekler, dizini döndürür; ItemAdded(item) çağrılır. |
AddBefore(item) |
Başa ekler; ItemAddedBefore(item) çağrılır. Dönüş değeri yeniUzunluk − 1'dir (eklenen öğenin dizini değil). |
Insert(index, item) |
Verilen dizine ekler; ItemSplice(index, item) çağrılır. splice'ın döndürdüğü boş diziyi döndürür. |
remove(item) |
Öğeyi çıkarır ve çıkarılanı tek elemanlı dizi olarak döndürür; öğe listede yoksa hiçbir şey yapmaz ve boş dizi döndürür. |
removeIndex(index) |
Dizindeki öğeyi çıkarır; çıkarılanları dizi olarak döndürür. |
clear() |
Hepsini çıkarır; yeni boş iç diziyi döndürür. |
has(item) / indexOf(item) / item(index) |
Üyelik (Set, O(1)) / dizin / dizine göre öğe. |
FindFromKey(key, value) |
öğe[key] === value olan öğeler. |
forEach(fn) / filter(fn) |
Dizi karşılıkları; filter yeni dizi döndürür. |
ReverseClone() |
Öğelerin ters sıralı kopyasını döndürür; listenin sırası değişmez. |
items / count |
İç dizi / uzunluk. |
Dispose() |
İç diziyi boşaltır (Set korunur). |
ItemAdded, ItemAddedBefore, ItemSplice |
Atanabilir geri çağrılar; ilgili ekleme sonrası çağrılır. |
Çıkarma işlemleri olay vermez. items iç diziyi verir; dışarıdan değiştirilirse has ile tutarsızlaşır.
Dictionary<K, V> ve NameValuePair<K, V>
NameValuePair çiftlerini bir List içinde tutan anahtar-değer sözlüğü. Anahtar karşılaştırması == iledir, arama doğrusaldır.
Örnekte sözlük, not kimliğine göre kaydedilmemiş taslakları tutar:
import { Dictionary } from "@motifx/core";
const drafts = new Dictionary<number, string>();
drafts.OnItemAdded = (id, text) => console.log(id, text.length);
drafts.Add(3, "Süt, ekmek");
drafts.has(3); // true
drafts.item(3); // NameValuePair { Key: 3, value: "Süt, ekmek" }
drafts.item(3)?.value; // "Süt, ekmek"
drafts.remove(3);
import { Dictionary } from "@motifx/core";
const drafts = new Dictionary();
drafts.OnItemAdded = (id, text) => console.log(id, text.length);
drafts.Add(3, "Süt, ekmek");
drafts.has(3); // true
drafts.item(3); // NameValuePair { Key: 3, value: "Süt, ekmek" }
drafts.item(3)?.value; // "Süt, ekmek"
drafts.remove(3);
| Üye | Açıklama |
|---|---|
Add(key, value) |
Çift ekler (aynı anahtar yinelenebilir; denetim yok), List.Add'in dizinini döndürür; OnItemAdded(key, value) çağrılır. |
has(key) |
Anahtar var mı (==). |
item(key) |
İlk eşleşen NameValuePair ya da undefined. |
remove(key) |
Anahtarı eşleşen bütün çiftleri çıkarır. |
removeIndex(index) |
Dizindeki çifti (0 tabanlı) çıkarır; çıkarılanları dizi olarak döndürür. |
clear() |
Hepsini çıkarır. |
forEach(fn) / filter(fn) / find(fn) |
NameValuePair üzerinde dolaşma, süzme, bulma. |
values |
Altındaki List<NameValuePair<K, V>>. |
OnItemAdded |
Atanabilir geri çağrı. |
NameValuePair<K, V> iki alanlı düz bir sınıftır: Key (büyük K) ve value.
LinkedList<T>
Çift yönlü, halkalı bağlı liste. Ekleme işlemleri bağı koparan bir fonksiyon döndürür; bu, dinleyici listeleri gibi "ekle, sonra elindeki handle'la çıkar" kalıpları için tasarlanmıştır.
Örnekte liste, sonradan çalıştırılacak temizlik fonksiyonlarını tutar:
import { LinkedList } from "@motifx/core";
const cleanups = new LinkedList<() => void>();
const unlinkTimer = cleanups.push(() => clearInterval(timer)); // sona
const unlinkKeys = cleanups.unshift(() => document.removeEventListener("keydown", onKey)); // başa
for (const run of cleanups) run(); // önce klavye dinleyicisi, sonra zamanlayıcı
unlinkTimer(); // zamanlayıcı çıkar; ikinci çağrı etkisiz
cleanups.size; // 1
import { LinkedList } from "@motifx/core";
const cleanups = new LinkedList();
const unlinkTimer = cleanups.push(() => clearInterval(timer)); // sona
const unlinkKeys = cleanups.unshift(() => document.removeEventListener("keydown", onKey)); // başa
for (const run of cleanups) run(); // önce klavye dinleyicisi, sonra zamanlayıcı
unlinkTimer(); // zamanlayıcı çıkar; ikinci çağrı etkisiz
cleanups.size; // 1
| Üye | Açıklama |
|---|---|
push(value) / unshift(value) |
Sona / başa ekler; o düğümü çıkaran fonksiyon döndürür (yinelenen çağrı etkisizdir). |
pop() / shift() |
Sondan / baştan çıkarır ve değeri döndürür; boşsa undefined. |
clear() |
Hepsini çıkarır; daha önce alınan çıkarma fonksiyonları etkisizleşir. |
size / isEmpty() |
Eleman sayısı / boş mu. |
[Symbol.iterator] |
Baştan sona dolaşır (for…of, yayma). Dolaşırken çıkarma güvenlidir; eklenen öğe o dolaşımda görülebilir. |
Dizine erişim yoktur; dizine göre erişim gerekiyorsa List ya da düz dizi kullanın.
Bkz.
API Referansı, Koleksiyon Sorguları.
Sonraki adım
Tek bir dinamik içeriği yerleştirip değiştiren kapsayıcı için Frame bölümüne geçin.