マッピング
CoddyのSolidityジャーニー「基礎」セクションの一部。レッスン 42/53。
マッピングは、ストレージ内でキーと値を関連付けます。コントラクトスコープで mapping(keyType => valueType) を宣言し、角括弧を使ってキーの読み取りや書き込みを行います。書き込まれていないキーは、valueType のデフォルト値を返します。たとえば、uint256 の場合はゼロです。
これをコントラクトスコープで宣言します:
mapping(uint256 => uint256) points;提供されている main 関数内で使用します:
points[4] = 18;
console.log(points[4]);
console.log(points[5]);この代入によって変更されるのはキー 4 だけです。キー 5 には一度も値が割り当てられていないため、ゼロとして読み取られます。マッピングには長さやキーの組み込みリストはありません。アプリケーションで反復処理が必要な場合は、キーを別途追跡してください。
書き込まれていないマッピングキーは、その値の型のデフォルト値として読み取られます。
チャレンジ
簡単uint256キーからuint256値へのマッピングをscoresという名前で宣言します。キーplayerにpointsを割り当て、その後scores[player]とscores[player + 1]を出力します。
テストは次の順序で引数をmainに渡します:uint256 player、uint256 points。各テストは新しいコントラクト状態で開始されます。
指定された出力にはconsole.logを使用します。指定された値のみを、1行に1つずつ出力してください。タスクで指定されていない限り、追加のラベルは付けないでください。
自分で試してみよう
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(uint256 player, uint256 points) external {
// ここに解答を書いてください。
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Solidityプレイグラウンド