【Solidity】マッピングのデフォルト値(初期値)まとめ

Solidityにおけるマッピングのデフォルト値(初期値)をまとめました。

マッピングのデフォルト値は、マッピングに設定した値のデータ型により異なります。

以下、詳しく説明します。

値のデータ型ごとのマッピングのデフォルト値

“値のデータ型”というのは、こちらの太字マーカー部分のことです。

mapping (キーのデータ型 => 値のデータ型) アクセス修飾子 変数名;

冒頭でも述べたように、マッピングのデフォルト値は、値のデータ型ごとで異なります。

一覧表にしたものが以下となります。

値のデータ型デフォルト値
uint, int0
boolfalse
addressaddress(0)(0x0000000000000000000000000000000000000000)
bytes0x
string""(空文字)
値のデータ型 vs デフォルト値

サンプルコード

各データ型ごとにデフォルト値を返す関数を作成してみました。

よろしければ実行して確認されてみてください。

// 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];
    }

}

マッピングのキー存在チェックにこの初期値を使ったりもするので、各データ型のデフォルト値をしっかりおさえておきましょう。

タイトルとURLをコピーしました