Kopya Kağıdı
Operatörlerin Öncelik Sırası
Aşağıdaki tablo, değerlendirme sırasına göre listelenen operatörler için öncelik sırasını belirtir.
Öncelik |
Tanım |
Operatör |
---|---|---|
1 |
Son ek ile tırma ve azaltma |
|
Yeni ifade |
|
|
Dizi elamanı görüntüleme |
|
|
Üye erişimi |
|
|
Fonksiyon çağırımı |
|
|
Parantezler |
|
|
2 |
Ön ek ile artırma ve azaltma |
|
Tekli çıkarma |
|
|
Tekli işlemler |
|
|
Mantıksal ‘DEĞİL’ |
|
|
Bitsel ‘DEĞİL’ |
|
|
3 |
Üs alma |
|
4 |
Çarpma, bölme ve mod alma |
|
5 |
Ekleme ve çıkarma |
|
6 |
Bitsel değiştirme operatörleri |
|
7 |
Bitsel ‘VE’ |
|
8 |
Bitsel ‘Özel veya’ |
|
9 |
Bitsel ‘YA DA’ |
|
10 |
Eşitsizlik operatörleri |
|
11 |
Eşitlik operatörleri |
|
12 |
Mantıksal ‘VE’ |
|
13 |
Mantıksal ‘YA DA’ |
|
14 |
Üçlü operatör |
|
Atama operatörleri |
|
|
15 |
Virgül operatörü |
|
Global Değişkenler
abi.decode(bytes memory encodedData, (...)) returns (...)
: ABI formatında gönderilen verinin ayrıştırılması sırasında, tipler ikinci argüman olarak parantez içinde verilir. Örneğin:(uint a, uint[2] memory b, bytes memory c) = abi.decode(data, (uint, uint[2], bytes))
abi.encode(...) returns (bytes memory)
: ABI formatında verileri düzenlerabi.encodePacked(...) returns (bytes memory)
: Verilen argümanların ABI formatında paketlenmiş veri işlemini gerçekleştirir. Paketli ABI formatındaki verinin belirsiz olabileceğine dikkat edin!abi.encodeWithSelector(bytes4 selector, ...) returns (bytes memory)
: ABI, verilen bağımsız değişkenleri ikinciden başlayarak ABI olarak formatlar ve verilen dört baytlık seçicinin önüne ekler.abi.encodeWithSignature(string memory signature, ...) returns (bytes memory)
: Şuna eşdeğerdirabi.encodeWithSelector(bytes4(keccak256(bytes(signature))), ...)
abi.encodeCall(function functionPointer, (...)) returns (bytes memory)
: ABI,functionPointer
çağrısını veri grupları içinde bulunan argümanlarla ABI olarak formatlar. Argümanlardaki tüm veri tipleri, fonksiyonun imzasi ile eşleşmesi kontrol edilir. Sonuçabi.encodeWithSelector(functionPointer.selector, (...))
değerine eşittirbytes.concat(...) returns (bytes memory)
: Değişken sayıda bayt ve bytes1, …, bytes32 argümanlarını bir bayt dizisine birleştirirstring.concat(...) returns (string memory)
: Değişken sayıda string argümanını tek bir string dizisinde birleştirirblock.basefee
(uint
): mevcut bloğun baz ücreti (EIP-3198 ve EIP-1559)block.chainid
(uint
): mevcut bloğun zincir kimliğiblock.coinbase
(address payable
): mevcut blok madencisinin adresiblock.difficulty
(uint
): mevcut blok zorluğublock.gaslimit
(uint
): mevcut blok gas sınırıblock.number
(uint
): mevcut blok numarasıblock.timestamp
(uint
): unix bazlı epoch (1/1/1970) gününden bu yana saniye biçiminde formatlanmış mevcut bloğun yaratılış zaman bilgisigasleft() returns (uint256)
: kalan gasmsg.data
(bytes calldata
): bütün calldatamsg.sender
(address
): mesajın göndericisi (mevcut çağırma için)msg.sig
(bytes4
): calldata’nın ilk 4 byte değeri (yani fonksiyon tanımlayıcısı)msg.value
(uint
): mesaj ile birlikte gönderilen wei miktarıtx.gasprice
(uint
): işlemin gas fiyatıtx.origin
(address
): işlemin göndericisi (tam çağrı zinciri)assert(bool condition)
: koşul “yanlış” ise yürütmeyi iptal edilir ve durum değişikliklerini geri alır (dahili hata için kullanın)require(bool condition)
: koşul “yanlış” ise yürütmeyi durdurur ve durum değişikliklerini geri alır (harici bileşende hatalı biçimlendirilmiş giriş veya hata için kullanın)require(bool condition, string memory message)
: koşul “yanlış” ise yürütmeyi iptal eder ve durum değişikliklerini geri alır (harici bileşende hatalı biçimlendirilmiş giriş veya hata için kullanın). Ayrıca hata mesajıda verir.revert()
: yürütmeyi iptal eder ve durum değişikliklerini geri alırrevert(string memory message)
: açıklayıcı bir string geri döndürerek yürütmeyi iptal eder ve durum değişikliklerini geri alırblockhash(uint blockNumber) returns (bytes32)
: verilen bloğun hash’i - yalnızca en son 256 blok için çalışırkeccak256(bytes memory) returns (bytes32)
: girdinin Keccak-256 hash’ini hesaplarsha256(bytes memory) returns (bytes32)
: cgirdinin SHA-256 hash’ini hesaplarripemd160(bytes memory) returns (bytes20)
: girdinin RIPEMD-160 hash’ini hesaplarecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) returns (address)
: eliptik eğri imzasından açık anahtarla ilişkili adresi kurtarır veya hata durumunda sıfır döndürür.addmod(uint x, uint y, uint k) returns (uint)
: toplama işleminin isteğe bağlı kesinlikte gerçekleştirildiği ve2**256``da kapsamadığı ``(x + y) % k
değerini hesaplar. Sürüm 0.5.0’den başlayarak “k!= 0” olduğunu iddia eder.mulmod(uint x, uint y, uint k) returns (uint)
: çarpmanın isteğe bağlı kesinlikte gerçekleştirildiği ve2**256
değerinde kapsamadığı(x * y) % k
değerini hesaplar. Sürüm 0.5.0’dan başlayarakk != 0
olduğunu iddia eder.this
(mevcut sözleşme tipi): mevcut sözleşme, açıkça “adres” veya “ödenecek adres”e dönüştürülebilirsuper
: kalıtım(miras) hiyerarşisinde bir seviye daha yüksek sözleşmeselfdestruct(address payable recipient)
: mevcut sözleşmeyi imha edin, fonlarını verilen adrese gönderin<address>.balance
(uint256
): Wei biçimindeki Adresler bakiyesi<address>.code
(bytes memory
): ref:address adresindeki kod (boş olabilir)<address>.codehash
(bytes32
): ref:address kod hash’i<address payable>.send(uint256 amount) returns (bool)
: verilen Wei miktarını Adresler ‘ine gönderir, başarısız olması durumundafalse
döndürür<address payable>.transfer(uint256 amount)
: verilen Wei miktarını Adresler ‘ine gönderir, başarısız olması durumunda geri dönertype(C).name
(string
): sözleşmenin ismitype(C).creationCode
(bytes memory
): verilen sözleşmenin bayt kodu oluşturma, bkz. Type Information.type(C).runtimeCode
(bytes memory
): verilen sözleşmenin çalışma zamanı bayt kodu, bkz. Type Information.type(I).interfaceId
(bytes4
): verilen arayüzün EIP-165 arayüz tanımlayıcısını içeren değer, bkz. Type Information.type(T).min
(T
):T
tipi tarafından temsil edilebilen en küçük değer, bkz. Type Information.type(T).max
(T
):T
tipi tarafından temsil edilebilen en büyük değer, bkz. Type Information.
Fonksiyon Görünürlük Belirteçleri
function myFunction() <visibility specifier> returns (bool) {
return true;
}
public
: harici ve dahili olarak görünür (depolama/durum değişkenleri için bir alıcı fonksiyon oluşturur)private
: sadece mevcut sözleşmede görünürexternal
: yalnızca harici olarak görünür (yalnızca fonksiyonlar için) - yani yalnızca mesajla çağrılabilir (this.func
aracılığıyla)internal
: sadece dahili olarak görünür
Modifiers
pure
fonksiyonlar için: Durumun değiştirilmesine veya erişime izin vermez.view
fonksiyonlar için: Durum değişikliğine izin vermez.payable
fonksiyonlar için: Bir çağrıyla birlikte Ether almalarını sağlar.constant
durum değişkenleri için: Atamaya izin vermez (başlatma dışında), depolama yuvasını işgal etmez.immutable
durum değişkenleri için: Başlatılma sırasında bir defa atamaya izin verir ve daha sonra sabit bir şekilde kalır. Kodda saklanır.anonymous
event’ler için: Event imzasını başlık olarak saklamazindexed
event parametreleri için: Parametreyi başlık olarak saklarvirtual
fonksiyonlar ve modifier’lar için: Türetilmiş sözleşmelerde modifier’ların fonksiyonlarının değiştirilmesine izin verir.override
: Bu fonksiyon, modifier veya genel durum değişkeninin, bir temel sözleşmedeki bir fonksiyonun veya modifier’ın davranışını değiştirdiğini ifade etmektedir.