gpt4 book ai didi

ethereum - 如何通过 Solidity 中的多个属性查询结构?

转载 作者:行者123 更新时间:2023-12-01 12:12:44 24 4
gpt4 key购买 nike

假设我有以下契约(Contract):

contract UserContract {
struct User {
address walletAddress;
string organisation;
string fName;
string lName;
string email;
uint index;
}
mapping(address => User) private users;
address[] private userIndex;
}

我知道如何编写一个函数来返回与给定 address 对应的用户信息,但我还想写一个函数,可以通过 User 获取用户信息的电子邮件地址。

这是如何运作的?我唯一的选择是为这个用例创建一个单独的映射来映射 User结构到字符串?如果是这样,这是否意味着结构被存储了两次?或者它只存储对该结构的引用?

谢谢!

最佳答案

如果您想通过地址或电子邮件(即,不是复合键)进行搜索,那么是的,最简单的选择是使用两个不同的 mappings .然而,struct值存储为副本(有关如何存储映射的信息,请参阅 this)。

避免复杂的额外存储structs ,将其存储在数组中并使用 mapping 的索引值。

contract UserContract {
struct User {
address walletAddress;
string organisation;
string fName;
string lName;
string email;
uint index;
}
User[] users;
mapping(address => uint256) private addressMap;
mapping(string => uint256) private emailMap; // Note this must be private if you’re going to use `string` as the key. Otherwise, use bytes32
address[] private userIndex;
}

关于ethereum - 如何通过 Solidity 中的多个属性查询结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50569984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com