Solidity - Lập bản đồ

Ánh xạ là một kiểu tham chiếu dưới dạng mảng và cấu trúc. Sau đây là cú pháp để khai báo một kiểu ánh xạ.

mapping(_KeyType => _ValueType)

Ở đâu

  • _KeyType- có thể là bất kỳ kiểu tích hợp nào cộng với byte và chuỗi. Không cho phép loại tham chiếu hoặc các đối tượng phức tạp.

  • _ValueType - có thể là bất kỳ loại nào.

Cân nhắc

  • Ánh xạ chỉ có thể có loại storage và thường được sử dụng cho các biến trạng thái.

  • Ánh xạ có thể được đánh dấu công khai. Solidity tự động tạo getter cho nó.

Thí dụ

Hãy thử đoạn mã sau để hiểu cách hoạt động của kiểu ánh xạ trong 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));
   }
}

Chạy chương trình trên bằng các bước được cung cấp trong chương Ứng dụng đầu tiên của Solidity .

Lần nhấp đầu tiên updateBalance Nút để đặt giá trị là 10 sau đó nhìn vào nhật ký sẽ hiển thị đầu ra được giải mã dưới dạng:

Đầu ra

{
   "0": "uint256: 10"
}