Koleksiyonlar
Koleksiyon İşlemleri
adet, ekle, kaldır, içerir, indis.
Koleksiyon işlemleri adet, uzunluk, ekle, kaldır, içerir ve indis [i] gibi temel üyeleri kapsar.
Sorgu üyeleri (filtrele, sırala, …) kaynağı değiştirmez; ekle/kaldır/indis ataması değiştirir.
Uyumluluk matrisi
Aşağıdaki tablo collection-api-matrix.json kaynağından üretilir (katalog applies_to + §17).
| API | liste | dizi | küme | sözlük | sliste | Mutasyon? |
|---|---|---|---|---|---|---|
adet | ✓ | — | ✓ | ✓ | ✓ | hayır |
uzunluk | — | ✓ | — | — | — | hayır |
ekle | ✓ | — | ✓ | ✓ | ✓ | evet |
kaldır | ✓ | — | ✓ | — | ✓ | evet |
içerir | ✓ | — | ✓ | — | ✓ | hayır |
[i] | ✓ | ✓ | — | — | ✓ | hayır |
filtrele | ✓ | ✓ | ✓ | — | ✓ | hayır |
sırala | ✓ | ✓ | ✓ | — | ✓ | hayır |
tsırala | ✓ | ✓ | ✓ | — | ✓ | hayır |
tersÇevir | ✓ | ✓ | ✓ | — | ✓ | hayır |
benzersiz | ✓ | ✓ | ✓ | — | ✓ | hayır |
atla | ✓ | ✓ | ✓ | — | ✓ | hayır |
sınırla | ✓ | ✓ | ✓ | — | ✓ | hayır |
ilk | ✓ | ✓ | ✓ | — | ✓ | hayır |
ilkYadaBoş | ✓ | ✓ | ✓ | — | ✓ | hayır |
bul | ✓ | ✓ | ✓ | — | ✓ | hayır |
varMı | ✓ | ✓ | ✓ | — | ✓ | hayır |
tümü | ✓ | ✓ | ✓ | — | ✓ | hayır |
adet(yüklem) | ✓ | ✓ | ✓ | — | ✓ | hayır |
toplam | ✓ | ✓ | ✓ | — | ✓ | hayır |
ortalama | ✓ | ✓ | ✓ | — | ✓ | hayır |
min | ✓ | ✓ | ✓ | — | ✓ | hayır |
maks | ✓ | ✓ | ✓ | — | ✓ | hayır |
✓ desteklenir; — bu bellek içi tipte yok veya tanı hatası. Mutasyon: kaynak örneği değişir.
liste vs dizi
liste\<T\> büyüyen ve adet kullanan sıralı koleksiyondur. dizi\<T\> sabit uzunluktadır ve uzunluk verir; ekle/kaldır US1514, dizi.adet / liste.uzunluk US0854.
İlgili konular
Liste · Dizi, Küme, Sözlük, sliste · Query İşlemleri
Referans
Bu sayfa 7 katalog öğesini kapsar. Aşağıdaki maddeler language-spec, örnekler ve katalog alanlarından üretilmiştir.
adet
Ne yapar?
adet özellik olarak koleksiyondaki öğe sayısını tamsayı olarak verir. Kaynağı değiştirmez. dizi.adet tanı hatasıdır (US0854); dizi için uzunluk kullanılır.
Ne zaman kullanılır?
liste, küme, sözlük veya sliste öğe sayısını okurken kullanın.
Sonuç ve koleksiyonlar
Biçim: koleksiyon.adet. Sonuç tamsayı. Boş koleksiyonda 0. Yüklemli sayım ayrı üyedir: adet(yüklem).
Kullanım
isimler: liste<metin> = ["Ali", "Ayşe"]syaz "{isimler.adet}"Basit örnek
isimler: liste<metin> = ["Ali", "Ayşe"]syaz "{isimler.adet}"Çıktı
2
Geçersiz örnek
sayılar: dizi<tamsayı> = [1, 2]syaz "{sayılar.adet}"US0854 — dizi.adet geçersiz; uzunluk kullanın.
Dikkat edilmesi gerekenler
dizi.adetUS0854 üretir; dizi içinuzunlukvardır.- Yüklemli
adet(^ …)ayrı katalog öğesidir (collection:adet(yüklem)).
Uygulandığı koleksiyonlar: liste, küme, sözlük, sliste
İlgili konular
Liste · Dizi, Küme, Sözlük, sliste
uzunluk
Ne yapar?
uzunluk, yalnız dizi\<T\> üzerinde sabit uzunluğu tamsayı olarak verir. Kaynağı değiştirmez. liste.uzunluk tanı hatasıdır (US0854).
Ne zaman kullanılır?
Sabit uzunluklu dizinin boyutunu okurken kullanın.
Sonuç ve koleksiyonlar
Biçim: dizi.uzunluk. Sonuç tamsayı. Boş dizi literalinde 0. liste/küme/sözlük/sliste için adet kullanılır.
Kullanım
sayılar: dizi<tamsayı> = [4, 5]syaz "{sayılar.uzunluk}"Basit örnek
sayılar: dizi<tamsayı> = [4, 5]syaz "{sayılar.uzunluk}"Çıktı
2
Geçersiz örnek
isimler: liste<metin> = ["Ali"]syaz "{isimler.uzunluk}"US0854 — uzunluk dizi içindir; liste.adet kullanın.
Dikkat edilmesi gerekenler
liste.uzunlukUS0854.dizi.adetde US0854; bu iki özellik birbirinin yerine geçmez.
Uygulandığı koleksiyonlar: dizi
İlgili konular
ekle
Ne yapar?
ekle kaynağı değiştirir. liste/küme/sliste: ekle(öğe) aynı örneğe ekler ve o örneği döndürür. sözlük: ekle(anahtar, değer). kümede var olan öğenin yeniden eklenmesi no-op’tur. dizi üzerinde US1514. Yinelenen sözlük anahtarı US1518.
Ne zaman kullanılır?
Koleksiyona öğe veya sözlüğe anahtar-değer yazarken kullanın.
Sonuç ve koleksiyonlar
liste/sliste/küme: koleksiyon.ekle(değer) → aynı örnek. sözlük: sözlük.ekle(k, v). Dönüş tipi alıcı tipidir. Gezinti/sorgu sırasında mutasyon US1519.
Kullanım
sayılar: liste<tamsayı> = [1, 2]sayılar.ekle(3)puanlar: sözlük<metin, tamsayı> = []puanlar.ekle("Ali", 10)Basit örnek
sayılar: liste<tamsayı> = [1, 2]sayılar.ekle(3)syaz "{sayılar.adet}"Çıktı
3
Geçersiz örnek
değerler: dizi<tamsayı> = [1, 2]değerler.ekle(3)US1514 — dizi sabit uzunluktadır; ekle yok.
Dikkat edilmesi gerekenler
- Kaynağı değiştirir (mutasyon).
- liste üzerinde dönüş aynı örnektir; yeni koleksiyon üretmez.
- kümede yinelenen ekleme örneği değiştirmez.
- sözlükte yinelenen anahtar US1518.
- dön/sorgu sırasında mutasyon US1519.
Uygulandığı koleksiyonlar: liste, küme, sözlük, sliste
İlgili konular
Liste · Dizi, Küme, Sözlük, sliste
kaldır
Ne yapar?
kaldır ilk eşit öğeyi çıkarır ve mantıksal döner: bulunduysa doğru, yoksa yanlış. Kaynağı değiştirir. dizi üzerinde US1514.
Ne zaman kullanılır?
liste, küme veya sliste’ten eşitlikle ilk eşleşen öğeyi çıkarırken kullanın.
Sonuç ve koleksiyonlar
Biçim: koleksiyon.kaldır(değer) → mantıksal. Eşitlik SameValue yoludur. Boş veya eşleşme yoksa yanlış (hata değil).
Kullanım
sayılar: liste<tamsayı> = [1, 2, 3]sayılar.kaldır(2)Basit örnek
sayılar: liste<tamsayı> = [1, 2, 3]sayılar.kaldır(2)syaz "{sayılar.içerir(2)}"Çıktı
yanlış
Geçersiz örnek
sayılar: dizi<tamsayı> = [1, 2]sayılar.kaldır(1)US1514 — diziden kaldırılamaz.
Dikkat edilmesi gerekenler
- Kaynağı değiştirir (mutasyon).
- Yalnız ilk eşit öğe çıkarılır.
- dizi üzerinde US1514.
- dön/sorgu sırasında mutasyon US1519.
Uygulandığı koleksiyonlar: liste, küme, sliste
İlgili konular
Liste · Dizi, Küme, Sözlük, sliste
içerir
Ne yapar?
içerir eşitlik sorgusudur; öğe varsa doğru, yoksa yanlış üretir. Kaynağı değiştirmez.
Ne zaman kullanılır?
liste, küme veya sliste üyeliğini sınarken kullanın.
Sonuç ve koleksiyonlar
Biçim: koleksiyon.içerir(değer) → mantıksal. Boş koleksiyonda yanlış.
Kullanım
sayılar: liste<tamsayı> = [10, 20]syaz "{sayılar.içerir(10)}"Basit örnek
sayılar: liste<tamsayı> = [10, 20]syaz "{sayılar.içerir(10)}"Çıktı
doğru
Dikkat edilmesi gerekenler
- Eşitlik sorgusudur; yüklem/
^almaz. - küme/sözlük indislenmez; üyelik için
içerir(veya sözlükte anahtar kuralları) kullanılır.
Uygulandığı koleksiyonlar: liste, küme, sliste
İlgili konular
Liste · Dizi, Küme, Sözlük, sliste
[i]
Ne yapar?
[i] sıfır tabanlı indis erişimidir. Okuma öğeyi verir; atama aynı örneği değiştirir (mutator). küme ve sözlük indislenmez. Aralık dışı okuma/atama US1517.
Ne zaman kullanılır?
liste, dizi veya sliste konumuna okurken veya yazarken kullanın.
Sonuç ve koleksiyonlar
Okuma: koleksiyon[i] → öğe tipi. Atama: koleksiyon[i] = değer kaynağı değiştirir. İlk öğe koleksiyon[0]. Boşta [0] US1517.
Kullanım
sayılar: liste<tamsayı> = [1, 2, 3]sayılar[0] = 10syaz "{sayılar[0]}"Basit örnek
sayılar: liste<tamsayı> = [1, 2, 3]sayılar[0] = 10syaz "{sayılar[0]}"Çıktı
10
Geçersiz örnek
sayılar: liste<tamsayı> = [1]syaz "{sayılar[3]}"US1517 — indeks aralık dışında.
Dikkat edilmesi gerekenler
- İndis sıfır tabanlıdır.
- küme/sözlük indislenmez.
- Aralık dışı US1517.
- Atama mutasyondur; dön/sorgu sırasında US1519 riski vardır.
- İndis ataması (koleksiyon[i] = …) aynı örneği değiştirir; salt okuma mutasyon değildir.
Uygulandığı koleksiyonlar: liste, dizi, sliste
İlgili konular
Liste · Dizi, Küme, Sözlük, sliste
Gezinti güvenliği
Nedir?
dön veya sorgu sırasında gezilen koleksiyon değişirse çalışma durur. Anlık görüntü (snapshot) gezintisi yoktur.
Çalışma zamanında ne olur?
Yorumlayıcı koleksiyon sürümünü izler. dön gövdesinde veya sorgu yürütürken aynı koleksiyona ekle/kaldır/mutasyon olursa US1519 üretilir. Derleme aşamasında «mutasyon yasak» ayıklanmaz.
Geçerli örnek
sayılar: liste<tamsayı> = [1, 2, 3]dön sayılar -> sayı{ syaz "{sayı}"}Çıktı
1 2 3
Geçersiz örnek
sayılar: liste<tamsayı> = [1, 2]dön sayılar -> sayı{ sayılar.ekle(sayı)}US1519 — Gezinti sırasında mutasyon; CollectionModified. Bu bir çalışma zamanı hatasıdır.
Dikkat edilmesi gerekenler
- Tanı kodu US1519'dur (CollectionModified).
- Sorgu üyeleri (
filtrele,sırala, …) yeni koleksiyon üretir; kaynak sabit kalırsa güvenlidir. - Derleyici emit yolu katalogda PARTIAL olabilir; davranış yorumlayıcı ve testlerle doğrulanmıştır.