Menu
Coddy logo textTech

Массивы в динамической памяти

Часть раздела Основы путешествия по Solidity на Coddy. Урок 37 из 53.

Используйте new uint256[](length), чтобы выделить в памяти массив с длиной, выбранной во время выполнения. Его элементы начинают со значения zero. Хотя в типе используются пустые скобки, размер выделенного массива в памяти нельзя изменить с помощью push или pop.

Инструкции в этом фрагменте выполняются внутри предоставленной функции main.

uint256[] memory values = new uint256[](3);
values[1] = 19;
console.log(values.length);
console.log(values[0]);

В массиве три ячейки, и значение было присвоено только средней ячейке. Его первый элемент остаётся равным нулю. Свойство length показывает, сколько элементов существует, а не значение последнего элемента.

Недавно выделенный в памяти массив uint256 начинается с элементов, имеющих нулевые значения.

challenge icon

Задание

Легко

Выделите массив в памяти длиной n, установите его последний элемент равным marker, затем выведите его длину и последний элемент. n находится в диапазоне от 1 до 8.

Тесты передают аргументы в main в следующем порядке: uint256 n, uint256 marker. Каждый тест начинается с нового состояния контракта.

Используйте console.log для требуемого вывода. Выведите только требуемые значения, по одному в строке, без дополнительных меток, если только задание явно их не требует.

Попробуйте сами

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
    function main(uint256 n, uint256 marker) external view {
        // Напишите ваше решение здесь.
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница Solidity