導入
同じ型の値を並べて持つのが 配列(array) です。参加者リストや履歴など、「順番に並べたい」「全部を辿りたい」データに使います。
説明
要素数が変わる動的配列と、固定長の配列があります。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract Players {
address[] public players; // 動的配列(可変長)
uint256[3] public topScores; // 固定長配列(要素3つ)
function join() public {
players.push(msg.sender); // 末尾に追加
}
function count() public view returns (uint256) {
return players.length; // 要素数
}
function firstPlayer() public view returns (address) {
return players[0]; // 添字は0から
}
}
address[] public players;… 長さが変わる動的配列。push()で末尾追加、.lengthで個数。uint256[3]… 長さ固定の配列。- 添字は 0 始まり。範囲外にアクセスすると処理は失敗(revert)する。
ガスの注意:配列を先頭から末尾まで for で回す処理は、要素が増えるほどガスが増え、上限を超えると処理が実行不能になることがあります。「全件ループ」は Solidity では要注意パターン。可能なら mapping で直接引く設計にします。
やってみよう
players.push(...) で無制限に増える配列を全走査する関数は、参加者が数万人になると1回の実行でガス上限を超え、動かなくなる危険があります。「配列は増える、ループはガスを食う」――この2つを結びつけて設計する感覚が大切です。