提问人:Asad Arslan 提问时间:10/31/2023 最后编辑:YannickAsad Arslan 更新时间:11/9/2023 访问量:13
在映射中保留记录(无覆盖)
Keep record in mapping (no over-writing)
问:
contract YourContract {
struct student_marks
{
uint maths ;
uint science ;
}
mapping (address => student_marks) public record ;
function add_marks(uint _maths, uint _science) public
{
record[msg.sender] = student_marks(_maths , _science) ;
}
}
如果 msg.sender 更新他的标记,则之前的标记将被覆盖。请帮助我如何记录每个msg.sender的标记。没有覆盖。 如果您认为有解决方案,请发表评论。希望我能以正确的方式阐述我的问题。 谢谢!
保存映射的键值数据而不覆盖前面的条目
答:
0赞
Rafael Zerbini
11/9/2023
#1
好吧,你需要一个记录数组,而不是一个单一的记录。
mapping(address => StudentMarks[]) public records;
然后为您的功能addMarks
StudentMarks memory newMarks = StudentMarks(_maths, _science);
records[msg.sender].push(newMarks);
然后你只需要建立你的getMarks策略,你可以通过索引来做。
评论