動的メモリ配列
CoddyのSolidityジャーニー「基礎」セクションの一部。レッスン 37/53。
new uint256[](length)を使用すると、実行時に選択した長さの配列をメモリに割り当てられます。その要素はゼロから始まります。型では空の角括弧を使用していますが、割り当てられたメモリ配列のサイズをpushやpopで変更することはできません。
この抜粋の文は、提供されたmain関数内で実行されます。
uint256[] memory values = new uint256[](3);
values[1] = 19;
console.log(values.length);
console.log(values[0]);この配列には3つのスロットがあり、中央のスロットだけに値が割り当てられています。最初の要素は0のままです。lengthプロパティは最後の要素の値ではなく、存在する要素の数を示します。
新しく割り当てられたuint256メモリ配列の要素は、最初は0の値になります。
チャレンジ
簡単長さ n のメモリ配列を割り当て、その最後の要素を marker に設定してから、配列の長さと最後の要素を出力してください。n は 1 以上 8 以下です。
テストでは、次の順序で main に引数を渡します:uint256 n、uint256 marker。各テストは新しいコントラクト状態で開始されます。
要求された出力には console.log を使用してください。要求された値のみを、1 行に 1 つずつ、タスクで指定されていない限り余分なラベルなしで出力してください。
自分で試してみよう
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(uint256 n, uint256 marker) external view {
// ここに解答を書いてください。
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Solidityプレイグラウンド