配列のループ処理
CoddyのSolidityジャーニー「基礎」セクションの一部。レッスン 39/53。
ループカウンターを配列インデックスとして使用し、すべての要素を処理します。0から開始し、カウンターが length より厳密に小さい間、処理を続けます。これにより、範囲外アクセスを試みることなく、最後の有効なインデックスを訪れます。
この抜粋のステートメントは、提供された main 関数内で実行されます。
uint256[3] memory values = [uint256(2), 5, 8];
uint256 total = 0;
for (uint256 i = 0; i < values.length; i++) {
total += values[i];
}
console.log(total);ループはインデックスのゼロ、1、2を訪れ、それぞれ2、5、8を加算します。包含的な <= length 条件ではインデックス3を試行してリバートします。アキュムレータはループの外側に置きます。
array.length の終端を超えずに、すべての有効なインデックスを訪れるには < を使用します。
チャレンジ
簡単a、b、cを固定サイズのメモリ配列に格納します。ループを使用して、それらの合計を計算して出力します。
テストは、次の順序で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 view {
// ここに解答を書いてください。
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Solidityプレイグラウンド