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ı

mapping(address => uint) public balances;

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.

function updateBalance(address _account, uint _amount) public {
    balances[_account] = _amount;
}

function getBalance(address _account) public view returns (uint) {
    return balances[_account];
}

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 ve pop 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