سالیدیفا

نگاشت (Mapping)

نگاشت ها (Mapping) به این گونه تعریف می شوند: mapping(keyType => valueType)

که در آن keyType می تواند هر نوع داده، بایت، رشته یا هر قراردادی باشد.

valueType هم می تواند هر نوع داده، نگاشت و آرایه هم باشد.

نگاشت ها قابل تکرار نیستند.

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

contract Mapping {
    // نگاشت از آدرس یه عدد
    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 {
    // نگاشت های تو در تو (نگاشت از آدرس به نگاشتی دیگر)
    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];
    }
}
Solidity

نمایش در Remix #

احساست در مورد این مقاله چیه؟