Solidity programlama dilini anlamak ve etkili bir şekilde kullanmak için temel veri türlerini öğrenmek çok önemlidir. Veri türleri, bir değişkenin hangi türde veri saklayabileceğini ve bu veri ile hangi işlemlerin yapılabileceğini belirler. Solidity’de çok çeşitli veri türleri bulunur, ancak bu yazıda en yaygın ve temel olan türleri inceleyeceğiz.
1. uint: Pozitif Tam Sayılar
uint (“unsigned integer”), negatif değer almayan tam sayıları temsil eder. Sadece pozitif tam sayılarla çalışılan durumlar için idealdir.
Kullanım:
- Varsayılan olarak 256 bit boyutundadır (uint256).
- Daha az bellek kullanmak için 8 bitlik artışlarla (örneğin, uint8, uint16, uint32) tanımlanabilir.
- uint8 0 ile 255 arasında, uint256 ise 0 ile 2^256-1 arasında değer alabilir.
Örnek:
pragma solidity ^0.8.0;
contract UintExample {
uint256 public largeNumber = 1000000000; // 256 bit bir tam sayı
uint8 public smallNumber = 255; // 8 bit bir tam sayı
function addNumbers(uint256 a, uint256 b) public pure returns (uint256) {
return a + b;
}
}
Bu örnekte, uint256 ve uint8 kullanılarak iki farklı değişken tanımlanmıştır. addNumbers fonksiyonu, iki pozitif tam sayıyı toplar.
2. int: Pozitif ve Negatif Tam Sayılar
int (“signed integer”), hem pozitif hem de negatif tam sayıları temsil eder. Varsayılan olarak 256 bit boyutundadır (int256). Daha az bellek kullanmak için 8 bitlik artışlarla (örneğin, int8, int16, int32) tanımlanabilir. int8, -128 ile 127 arasında, int256 ise -2^255 ile 2^255-1 arasında değer alabilir.
Örnek:
pragma solidity ^0.8.0;
contract IntExample {
int256 public positiveNumber = 100;
int256 public negativeNumber = -100;
function subtractNumbers(int256 a, int256 b) public pure returns (int256) {
return a - b;
}
}
Bu örnekte, hem pozitif hem de negatif tam sayılar ile çalışan bir akıllı sözleşme görüyoruz. subtractNumbers fonksiyonu, iki tam sayıyı çıkarır.
3. bool: Doğru veya Yanlış Değeri
bool, mantıksal bir değişken türüdür ve sadece iki değer alabilir: true veya false. Genellikle koşul ifadelerinde ve mantıksal kontrollerde kullanılır.
pragma solidity ^0.8.0;
contract BoolExample {
bool public isActive = true;
function toggleActive() public {
isActive = !isActive;
}
}
Bu örnekte, bir değişkenin durumu (isActive) toggleActive fonksiyonu kullanılarak değiştirilmektedir.
4. address: Cüzdan veya Akıllı Sözleşme Adresi
address, bir cüzdan veya akıllı sözleşme adresini saklamak için kullanılır. Blockchain üzerindeki herhangi bir hesabın (EOA veya akıllı sözleşme) 20 byte’lık adresini temsil eder. Adres türüne özel balance ve transfer gibi özellikler bulunur.
pragma solidity ^0.8.0;
contract AddressExample {
address public owner;
constructor() {
owner = msg.sender; // Sözleşmeyi deploy eden adresi kaydet
}
function getBalance() public view returns (uint256) {
return owner.balance; // Adresin bakiyesini döndür
}
}
Bu örnekte, akıllı sözleşmeyi deploy eden adres owner olarak saklanıyor ve bu adresin bakiyesi sorgulanabiliyor.
5. string: Metin Verileri
string, metin verilerini saklamak için kullanılan veri türüdür. Solidity’de string verilerle çalışmak daha maliyetlidir, bu yüzden dikkatli kullanılmalıdır. string türü genellikle sabit mesajlar veya metin verileri saklamak için kullanılır. Dinamik uzunluktaki metinleri destekler.
pragma solidity ^0.8.0;
contract StringExample {
string public greeting = "Merhaba, Blockchain!";
function updateGreeting(string memory newGreeting) public {
greeting = newGreeting;
}
}
Bu örnekte, bir greeting mesajı saklanır ve bu mesajın değeri updateGreeting fonksiyonu kullanılarak güncellenebilir.