Solidityにおけるマッピングのデフォルト値(初期値)をまとめました。
マッピングのデフォルト値は、マッピングに設定した値のデータ型により異なります。
以下、詳しく説明します。
値のデータ型ごとのマッピングのデフォルト値
“値のデータ型”というのは、こちらの太字マーカー部分のことです。
mapping (キーのデータ型 => 値のデータ型) アクセス修飾子 変数名;
冒頭でも述べたように、マッピングのデフォルト値は、値のデータ型ごとで異なります。
一覧表にしたものが以下となります。
値のデータ型 | デフォルト値 |
---|---|
uint, int | 0 |
bool | false |
address | address(0)(0x0000000000000000000000000000000000000000) |
bytes | 0x |
string | ""(空文字) |
サンプルコード
各データ型ごとにデフォルト値を返す関数を作成してみました。
よろしければ実行して確認されてみてください。
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract Test {
mapping (address => uint) public uintMapping;
mapping (address => int) public intMapping;
mapping (address => bool) public boolMapping;
mapping (address => address) public addressMapping;
mapping (address => bytes) public bytesMapping;
mapping (address => string) public stringMapping;
function getDefaultValueUint() public view returns (uint) {
return uintMapping[msg.sender];
}
function getDefaultValueInt() public view returns (int) {
return intMapping[msg.sender];
}
function getDefaultValueBool() public view returns (bool) {
return boolMapping[msg.sender];
}
function getDefaultValueAddress() public view returns (address) {
return addressMapping[msg.sender];
}
function getDefaultValueBytes() public view returns (bytes memory) {
return bytesMapping[msg.sender];
}
function getDefaultValueString() public view returns (string memory) {
return stringMapping[msg.sender];
}
}
マッピングのキー存在チェックにこの初期値を使ったりもするので、各データ型のデフォルト値をしっかりおさえておきましょう。