ストレージ配列
CoddyのSolidityジャーニー「基礎」セクションの一部。レッスン 38/53。
コントラクトスコープで宣言された動的配列はストレージに格納されます。push(value)を使うと要素を追加でき、pop()を使うと最後の要素を削除できます。空の配列に対してpopを呼び出すと、処理が取り消されます。値が追加または削除されると、その長さは変化します。
これをコントラクトスコープで宣言します。
uint256[] values;提供されているmain関数内で使用します。
values.push(6);
values.push(15);
values.pop();
console.log(values.length);
console.log(values[0]);このテストでは、配列は空の状態から始まります。2回のpushによって2つの要素が作成され、popによって2番目の要素が削除されます。最初の要素は6のままです。storage配列を更新するとコントラクトの状態が変更されるため、mainをviewにすることはできません。
pushとpopは、動的なstorage配列の末尾を変更します。
チャレンジ
簡単values という名前の動的な uint256 ストレージ配列を宣言します。a、b、c を追加し、最後の要素を削除してから、length と残った最後の値を出力します。
テストでは、次の順序で main に引数を渡します: uint256 a、uint256 b、uint256 c。各テストは新しいコントラクト状態で開始されます。
要求された出力には console.log を使用します。要求された値のみを、1 行に 1 つずつ出力してください。タスクで指定されていない限り、追加のラベルは付けません。
自分で試してみよう
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(uint256 a, uint256 b, uint256 c) external {
// ここに解答を書いてください。
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Solidityプレイグラウンド