映射缺乏理解

Mapping lack of understanding

我读了很多关于这个话题的文章,我理解它很好。 但是,我唯一不明白的是开发人员如何在没有插入值的函数的情况下使用它。 示例:

mapping (uint256=>address) public IdToAddress; 

在他们定义之后,我看到他们在以下函数中使用:

function HolderOfNFT(Uint256 Id) public returns (address) {
 return IdToAddress[Id];

}

映射如何在指向正确地址的 Id 键中具有值? 非常感谢!!

所有映射值默认为空。

因此,除非在代码中的某处设置了该值,否则您的示例将 return address(0) 用于任何 Id

您可以像将映射值分配给数组一样分配映射值。示例:

IdToAddress[Id] = address(0x123);
function transfer(address _recipient, uint256 _id) public {
    require(IdToAddress[_id] == msg.sender, "You're not the current token owner");
    IdToAddress[_id] = _recipient;
}