Mapping & Arrays
Solidity'de Mapping ve Array yapıları, verileri organize etmek ve saklamak için kullanılan temel veri yapılarıdır. Bu yapılar, kontrat içinde depolanan bilgileri kolayca yönetmenize olanak tanır.
1. Mapping
Mapping (haritalama), anahtar-değer (key-value) çiftleri olarak verileri saklayan bir veri yapısıdır. Solidity'de mapping, bir tür veri tabanı gibi çalışır ve genellikle kontratlarda sıkça kullanılır.
Mapping Tanımı
Bu örnekte, balances
adında bir mapping tanımlanmıştır. Bu mapping, her bir adres için bir uint
değeri saklar.
Mapping Kullanımı
Mapping'ler, belirli bir anahtara karşılık gelen değeri saklamak ve bu değere erişmek için kullanılır.
Bu örnekte, updateBalance
fonksiyonu belirli bir adresin bakiyesini güncellerken, getBalance
fonksiyonu o adresin mevcut bakiyesini döndürür.
Mapping'in Özellikleri
Mapping'ler varsayılan olarak her anahtar için
0
değerini döndürür. Bu, mapping'de var olmayan bir anahtar sorgulandığında da geçerlidir.Mapping'ler üzerinde iterasyon (döngü) yapılamaz. Yani, mapping'deki tüm anahtar-değer çiftlerini topluca almak için bir yol yoktur.
2. Arrays (Diziler)
Array (dizi), aynı veri türündeki öğelerin bir listesini saklayan bir veri yapısıdır. Solidity'de diziler, sabit boyutlu (fixed-size
) veya dinamik boyutlu (dynamic-size
) olabilir.
Array Tanımı
Bu örnekte, numbers
dinamik boyutlu bir dizi, fixedNumbers
ise sabit boyutlu bir dizidir.
Array Kullanımı
Dizilere eleman ekleyebilir, elemanlara erişebilir ve elemanları güncelleyebilirsiniz.
Bu örnekte, addNumber
fonksiyonu bir sayıyı diziye ekler, getNumber
belirli bir indeksteki sayıyı döndürür ve updateNumber
belirli bir indeksteki sayıyı günceller.
Array'lerin Özellikleri
Dinamik boyutlu diziler
push
vepop
gibi fonksiyonlarla genişletilebilir veya daraltılabilir.Sabit boyutlu dizilerde dizinin boyutu derleme zamanında belirlenir ve sonradan değiştirilemez.
3. Mapping & Array Kombinasyonu
Mapping ve Array veri yapıları, genellikle daha karmaşık veri yönetimi için bir arada kullanılabilir. Örneğin, belirli adreslerin bir dizi değerini saklamak isteyebilirsiniz.
Örnek:
Bu örnekte, userScores
mapping'i, her bir kullanıcı için bir dizi puan saklar. addUserScore
fonksiyonu, belirli bir kullanıcıya puan eklerken, getUserScores
fonksiyonu o kullanıcının puanlarını döndürür.
Örnek Uygulama
Aşağıda, mapping ve array'lerin kullanıldığı bir örnek kontrat bulunmaktadır:
Bu kontrat, bir kullanıcının sahip olduğu tokenları saklamak için hem array hem de mapping veri yapılarını kullanır. Kullanıcılar yeni tokenlar ekleyebilir ve sahip oldukları tokenları sorgulayabilir.
Last updated