Solidity - การทำแผนที่

การแม็ปเป็นประเภทการอ้างอิงเป็นอาร์เรย์และโครงสร้าง ต่อไปนี้เป็นไวยากรณ์เพื่อประกาศประเภทการแมป

mapping(_KeyType => _ValueType)

ที่ไหน

  • _KeyType- สามารถเป็นชนิดที่มีอยู่แล้วภายในบวกไบต์และสตริง ไม่อนุญาตให้ใช้ประเภทการอ้างอิงหรือวัตถุที่ซับซ้อน

  • _ValueType - สามารถเป็นประเภทใดก็ได้

ข้อควรพิจารณา

  • การจับคู่สามารถมีได้เฉพาะประเภทของ storage และโดยทั่วไปจะใช้สำหรับตัวแปรสถานะ

  • การทำแผนที่สามารถทำเครื่องหมายเป็นสาธารณะ Solidity สร้าง getter ให้กับมันโดยอัตโนมัติ

ตัวอย่าง

ลองใช้รหัสต่อไปนี้เพื่อทำความเข้าใจว่าประเภทการแมปทำงานอย่างไรใน Solidity

pragma solidity ^0.5.0;

contract LedgerBalance {
   mapping(address => uint) public balances;

   function updateBalance(uint newBalance) public {
      balances[msg.sender] = newBalance;
   }
}
contract Updater {
   function updateBalance() public returns (uint) {
      LedgerBalance ledgerBalance = new LedgerBalance();
      ledgerBalance.updateBalance(10);
      return ledgerBalance.balances(address(this));
   }
}

เรียกใช้โปรแกรมข้างต้นโดยใช้ขั้นตอนที่ให้ไว้ในบทSolidity First Application

คลิกครั้งแรก updateBalance ปุ่มเพื่อตั้งค่าเป็น 10 จากนั้นดูในบันทึกซึ่งจะแสดงเอาต์พุตที่ถอดรหัสเป็น -

เอาต์พุต

{
   "0": "uint256: 10"
}