Քարտեզները(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-ում