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.