Eşlemeler
11 işlev. Her kaydın ne aldığı, ne verdiği ve çalışan örneği.
Tüm anahtarları siler.
Değer döndürmez; haritadaki tüm çiftleri siler (harita yerinde boşalır).
Not
Aynı harita nesnesi korunur, yalnız içi boşaltılır; ona tutan başka değişkenler de boş görür.
m = mapNew() mapPut(m, "a", 1) mapClear(m) plot(mapSize(m))
Bir çift yazılıp harita boşaltılır; boyut 0 çizilir.
Anahtar var mı (true/false).
Anahtar haritada varsa true, yoksa false.
Not
Değerin na olması ile anahtarın hiç olmaması farklıdır; bu fonksiyon yalnız anahtarın varlığına bakar.
m = mapNew() mapPut(m, "a", 1) plot(iff(mapContains(m, "a"), 1, 0))
"a" anahtarı yazıldığı için 1 çizilir.
Haritanın sığ kopyası.
Aynı çiftleri taşıyan yeni ve bağımsız bir harita.
Not
Kopya bağımsızdır — kopyaya yazmak aslını etkilemez. Yeni bir durum dalı denemek için kullanışlıdır.
a = mapNew() mapPut(a, "x", 1) b = mapCopy(a) mapPut(b, "y", 2) plot(mapSize(a))
Kopyaya yeni çift eklenir ama asıl harita bir çift tuttuğundan boyut 1 çizilir.
Anahtarın değeri (yoksa boş).
Anahtardaki değer; anahtar yoksa (ya da girdi harita değilse) na.
Not
Var olmayan anahtar hata vermez, na döner — koşullar güvenle na üzerinde çalışır.
m = mapNew() mapPut(m, "tepe", highest(high, 20)) plot(mapGet(m, "tepe"))
20 barlık en yüksek seviyeyi "tepe" anahtarında saklar ve geri okuyup çizer.
Anahtarları dizi olarak döner. Sonuc: Arr(len=0, [])
Haritadaki anahtarları yazım sırasıyla taşıyan bir dizi.
Not
Dizi eleman sayısını arraySize ile, elemanları dizi fonksiyonlarıyla dolaşabilirsiniz.
m = mapNew() mapPut(m, "a", 1) mapPut(m, "b", 2) plot(arraySize(mapKeys(m)))
İki anahtar yazılır; anahtar dizisinin uzunluğu 2 çizilir.
Anahtar ile değeri eşleyen boş bir tablo kurar. Sırayla değil ADIYLA erişmek istediğinde diziden daha uygundur: sembol adına göre bir sayı tutmak gibi.
Boş bir harita (anahtar→değer). Anahtar metin, sayı ya da mantıksal olabilir.
Not
Harita anahtar→değer eşlemesi tutar; aynı anahtar tekrar yazıldığında eski değer ezilir. Değer olarak sayı, metin, mantıksal ya da seri saklanabilir.
Ne zaman kullanılır
Bir etikete (sembol, seviye adı, durum) karşılık gelen değeri saklayıp sonradan ada göre okumak istediğinde; sıralı indeks yerine anlamlı anahtarla erişim gerektiğinde.
m = mapNew() mapPut(m, "esik", 42) plot(iff(mapContains(m, "esik"), close, open))
Boş harita kurar, "esik" anahtarına 42 yazar; anahtar var olduğu için close çizilir.
Haritada bir anahtara değer yazar; anahtar zaten varsa eski değerin üstüne yazar ve eskisini verir. Yoksa yeni bir kayıt açar.
Anahtarda önceden duran değer; anahtar yoksa na. Harita yerinde değişir.
Not
Anahtar zaten varsa değeri güncellenir ve eski değer döndürülür; yoksa yeni çift eklenir ve na döner.
m = mapNew() onceki = mapPut(m, "k", 10) mapPut(m, "k", 20) plot(mapGet(m, "k"))
"k" anahtarına önce 10, sonra 20 yazar; ilk yazımda önceki değer na'dır. Son değer 20 çizilir.
harita2'yi harita1'e kopyalar.
Değer döndürmez; harita2'deki tüm çiftleri harita1'e kopyalar (çakışan anahtarlar ezilir).
Not
Yalnız hedef (harita1) değişir; kaynak (harita2) olduğu gibi kalır.
a = mapNew() mapPut(a, "x", 1) b = mapNew() mapPut(b, "y", 2) mapPutAll(a, b) plot(mapSize(a))
b'nin çifti a'ya eklenir; a artık iki çift tuttuğundan boyut 2 çizilir.
Anahtarı siler ve değerini döner.
Silinen anahtarın değeri; anahtar yoksa na. Harita yerinde değişir.
Not
Anahtar yoksa sessizce na döner, hata oluşmaz.
m = mapNew() mapPut(m, "a", 5) mapRemove(m, "a") plot(iff(mapContains(m, "a"), 1, 0))
"a" yazılıp hemen silinir; artık bulunmadığından 0 çizilir.
Anahtar sayısı.
Haritadaki anahtar-değer çifti sayısı; girdi harita değilse 0.
Not
Boş harita için 0 döner. Aynı anahtara tekrar yazmak boyutu artırmaz.
m = mapNew() mapPut(m, "a", 1) mapPut(m, "b", 2) plot(mapSize(m))
İki farklı anahtar yazılır; boyut 2 çizilir.
Değerleri dizi olarak döner. Sonuc: Arr(len=0, [])
Haritadaki değerleri anahtar yazım sırasıyla taşıyan bir dizi.
Not
Sayısal değerler için arraySum / arrayAvg gibi dizi fonksiyonlarıyla toplu işlem yapılabilir.
m = mapNew() mapPut(m, "a", 10) mapPut(m, "b", 20) plot(arraySum(mapValues(m)))
Değerler 10 ve 20; değer dizisinin toplamı 30 çizilir.