Erc-20
關於 ERC20 合約中映射命令的問題
這是 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;
這是嵌套映射,更先進的技術來跟踪事物。一旦您了解了映射如何與範例一起工作,您將很快掌握嵌套映射的概念。為了回答您的問題,沒有其他替代映射的方法。這是一種跟踪數據的獨特方式。有人可能會說還有一個數組,這在某種程度上是正確的。在數組中,索引作為鍵,值本身,但索引只能是數值,正如您在映射中看到的那樣,鍵可以是任何東西。