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"
}