Erc-20

關於 ERC20 合約中映射命令的問題

  • April 18, 2022

這是 OpenZeppelin 合約的 ERC20.sol 的一部分。

mapping(address => uint256) private _balances;

mapping(address => mapping(address => uint256)) private _allowances;

我正在從頭開始學習程式,所以這可能是一個初學者的問題,但我真的不明白這個命令扮演什麼角色。除了映射,還有其他命令可以替代嗎?

映射是solidity的核心概念,它與python中的字典或javascript中的對象幾乎相同。

這個想法是使用鍵來跟踪值key : value。因此,當您需要該值時,只需給它鍵,它就會返回該值。

mapping(address => uint256) private _balances- 地址是鍵,uint256 是值。因此,每個地址都與某個數字相關聯,在本例中為餘額。如果你想取回某人的餘額,給它地址,它會返回餘額:

要從給定映射中檢索該 uint256 值,您只需呼叫_balances[address]並瞧。如果您想用新余額填充該地址,請執行相同的操作_balances[address] = 1000

mapping(address => mapping(address => uint256)) private _allowances;這是嵌套映射,更先進的技術來跟踪事物。一旦您了解了映射如何與範例一起工作,您將很快掌握嵌套映射的概念。

為了回答您的問題,沒有其他替代映射的方法。這是一種跟踪數據的獨特方式。有人可能會說還有一個數組,這在某種程度上是正確的。在數組中,索引作為鍵,值本身,但索引只能是數值,正如您在映射中看到的那樣,鍵可以是任何東西。

引用自:https://ethereum.stackexchange.com/questions/126410