Քարտեզագրման

Քարտեզները(mappings) ստեղծվում են շարահյուսական քարտեզագրմամբ (keyType => valueType):

KeyType-ը կարող է լինել ցանկացած ներկառուցված արժեքի տեսակ, բայթ, տող կամ որևէ պայմանագիր:

valueType-ը կարող է լինել ցանկացած տեսակ՝ ներառյալ մեկ այլ քարտեզագրում կամ զանգված:

Քարտեզագրումները կրկնվող չեն:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract Mapping {
    // Քարտեզագրում address-ից մինչև uint
    mapping(address => uint) public myMap;

    function get(address _addr) public view returns (uint) {
        // Քարտեզագրումը միշտ արժեք է վերադարձնում:
        // Եթե արժեքը երբեք չի սահմանվել, այն կվերադարձնի կանխադրված արժեքը:
        return myMap[_addr];
    }

    function set(address _addr, uint _i) public {
        // Թարմացրել արժեքը այս հասցեում
        myMap[_addr] = _i;
    }

    function remove(address _addr) public {
        // Վերականգնել արժեքը կանխադրված արժեքին:
        delete myMap[_addr];
    }
}

contract NestedMapping {
    // Ներդրված քարտեզագրում(Nested mapping) (քարտեզագրում հասցեից մեկ այլ քարտեզագրում)
    mapping(address => mapping(uint => bool)) public nested;

    function get(address _addr1, uint _i) public view returns (bool) {
        // Դուք կարող եք արժեքներ ստանալ ներդրված քարտեզագրումից
        // նույնիսկ այն դեպքում, երբ այն նախնականացված չէ
        return nested[_addr1][_i];
    }

    function set(address _addr1, uint _i, bool _boo) public {
        nested[_addr1][_i] = _boo;
    }

    function remove(address _addr1, uint _i) public {
        delete nested[_addr1][_i];
    }
}

Փորձեք Remix-ում

What are your feelings