Struct & Enum
Solidity'de Struct ve Enum veri yapıları, daha karmaşık verileri ve durumları saklamak için kullanılır. Bu yapılar, akıllı kontratların daha düzenli ve okunabilir olmasına yardımcı olur.
1. Struct
Struct, farklı veri tiplerini bir araya getirip tek bir yapı altında toplamak için kullanılır. Struct'lar, Solidity'de veriyi organize etmenin ve kompleks veri tiplerini yönetmenin güçlü bir yoludur.
Yukarıdaki örnekte Person
adlı struct, bir kişinin adını (name
), yaşını (age
) ve cüzdan adresini (wallet
) saklar.
Struct Kullanımı
Struct tanımladıktan sonra, bu yapıdan yeni veri oluşturabiliriz.
Bu kodda, person1
adında bir Person
örneği oluşturulmuş ve bu örneğe Alice adında bir kişi atanmıştır.
Struct ile Fonksiyonlar
Struct'lar, fonksiyonlar içinde parametre olarak kullanılabilir veya fonksiyonlardan döndürülebilir.
Bu fonksiyon, bir Person
struct'ı oluşturur ve döndürür.
Struct'ları Depolama
Struct'lar, mapping ve array gibi veri yapıları içerisinde depolanabilir. Bu, Solidity'de veri tabanı gibi kullanılabilecek güçlü bir yapıdır.
Bu örnekte, people
adlı bir mapping kullanarak birden fazla kişiyi saklayabilirsiniz.
2. Enum
Enum, bir dizi sabit değeri tanımlamak için kullanılır. Özellikle belirli bir durum veya seçenek seti varsa, enum kullanmak kodu daha okunabilir hale getirir.
Bu enum, bir siparişin durumlarını saklamak için kullanılabilir: Pending
, Shipped
, Delivered
, Canceled
.
Enum Kullanımı
Enum tanımlandıktan sonra, bir değişken olarak kullanılabilir:
Bu örnekte, currentStatus
adlı bir enum değişkeni oluşturulmuş ve setStatus
fonksiyonu ile bu durum ayarlanabilir.
Enum ile Koşullu Yapılar
Enum'lar, koşullu yapılarda kullanılarak belirli işlemler gerçekleştirilirken durumların kontrol edilmesini sağlar:
Bu örnekte, shipOrder
fonksiyonu yalnızca sipariş durumu Pending
olduğunda çalışır ve durumu Shipped
olarak günceller.
Örnek Uygulama
Aşağıda, hem Struct
hem Mapping
hem de Enum
kullanılarak oluşturulmuş bir örnek kontrat bulunmaktadır:
Bu örnekte, StructEnumExample
adlı kontrat, siparişleri takip etmek için Order
struct'ını ve sipariş durumlarını izlemek için Status
enum'ını kullanır. Yeni siparişler eklenebilir, durumları güncellenebilir ve mevcut durumu kontrol edilebilir.
Last updated