Dinamik Bellek Dizileri
Coddy'nin Solidity Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 37 / 53.
Çalışma zamanında seçilen bir uzunluğa sahip bir diziyi bellekte ayırmak için new uint256[](length) kullanın. Öğeleri sıfırdan başlar. Tür boş köşeli parantezler kullansa da ayrılan bellek dizisi push veya pop ile yeniden boyutlandırılamaz.
Bu alıntıdaki ifadeler, sağlanan main işlevinin içinde çalışır.
uint256[] memory values = new uint256[](3);
values[1] = 19;
console.log(values.length);
console.log(values[0]);Dizinin üç yuvası vardır ve yalnızca ortadaki yuvaya değer atanmıştır. İlk öğesi sıfır olarak kalır. length özelliği, son öğenin değerini değil, kaç öğenin bulunduğunu bildirir.
Yeni ayrılmış bir uint256 bellek dizisi, sıfır değerli öğelerle başlar.
Görev
Kolayn uzunluğunda bir bellek dizisi ayırın, son öğesini marker olarak ayarlayın, ardından uzunluğunu ve son öğesini yazdırın. n, 1 ile 8 arasındadır.
Testler, main işlevine bağımsız değişkenleri şu sırayla iletir: uint256 n, uint256 marker. Her test, yeni bir sözleşme durumuyla başlar.
İstenen çıktıyı almak için console.log kullanın. Yalnızca istenen değerleri, her satıra bir tane gelecek şekilde yazdırın; görev bunları belirtmediği sürece ek etiket kullanmayın.
Kendin dene
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(uint256 n, uint256 marker) external view {
// Çözümünüzü buraya yazın.
}
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temel Bilgiler bölümündeki tüm dersler
2Değişkenler ve Türler
İşaretsiz TamsayılarGirdiler ve Çıktılarİşaretli TamsayılarBoolean DeğerleriBellekte DizelerProfil Kartı5Fonksiyonlar
Fonksiyon ParametreleriDeğer DöndürmeSaf FonksiyonlarYardımcı ÇağrılarıYeniden Kullanılabilir Hesaplamalar8Diziler
Sabit Boyutlu DizilerDinamik Bellek DizileriDepolama DizileriDiziler Üzerinde DöngüDizi ÖzetiKendi başına pratik yap: Solidity playground