Tiêu đề gốc: "Giới thiệu về chủ nghĩa tối giản Solidity: 6. Các kiểu ánh xạ ánh xạ"
Tác giả gốc: 0xAA
p>
Gần đây mình đang học lại Solidity, củng cố chi tiết và viết bài "Giới thiệu về Solidity Minimalist" cho người mới học (chuyên gia lập trình có thể tìm bài hướng dẫn khác), cập nhật 1-3 bài giảng mỗi tuần.
Tất cả các mã đều là mã nguồn mở trên github: github.com/AmazingAng/WTFSolidity
Trong bài giảng này, chúng tôi sẽ giới thiệu bảng băm một cách rõ ràng: kiểu ánh xạ.
Trong việc lập bản đồ, người ta có thể truyền khóa (Khóa) tới truy vấn giá trị tương ứng (Value), ví dụ: truy vấn địa chỉ ví của một người thông qua id của người đó.
Định dạng khai báo ánh xạ là mapping(_KeyType => _ValueType), trong đó _KeyType và _ValueType lần lượt là các loại biến Khóa và Giá trị. Ví dụ:

Quy tắc 1: _KeyType được ánh xạ chỉ có thể chọn loại mặc định về độ rắn, chẳng hạn như uint , địa chỉ, v.v. không thể sử dụng cấu trúc tùy chỉnh. Và _ValueType có thể sử dụng các loại tùy chỉnh. Ví dụ sau sẽ báo lỗi vì _KeyType sử dụng cấu trúc tùy chỉnh của chúng tôi:

Quy tắc 2: Vị trí lưu trữ được ánh xạ phải là nơi lưu trữ nên có thể được sử dụng cho các biến trạng thái hợp đồng và các biến lưu trữ trong hàm. Không thể được sử dụng trong các tham số hoặc trả về kết quả của các hàm công khai.
Quy tắc 3: Nếu ánh xạ được khai báo là công khai, Solidity sẽ tự động tạo một hàm getter cho bạn và bạn có thể truy vấn chức năng tương ứng thông qua Key.Value.
Quy tắc 4: Cú pháp của cặp khóa-giá trị mới để ánh xạ là _Var[_Key] = _Value , trong đó _Var là tên của ánh xạ biến, _Key và _Value tương ứng với các cặp khóa-giá trị mới được thêm vào. Ví dụ:

Trong bài giảng này chúng tôi giới thiệu cách sử dụng bảng băm - ánh xạ một cách vững chắc. Cho đến nay, chúng ta đã tìm hiểu tất cả các loại biến phổ biến và sau đó chúng ta sẽ tìm hiểu luồng điều khiển if-else, while, v.v.
Liên kết gốc
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia
