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 更新了他的标记,则之前的标记将被覆盖。请帮助我如何保留每个消息发送者的标记记录。没有重写。 如果您认为有解决方案,请发表评论。希望我能以正确的方式阐述我的问题。 谢谢你!
保存映射的键值数据而不覆盖之前的条目
嗯,您需要一组记录,而不是单个记录。
mapping(address => StudentMarks[]) public records;
然后是你的
addMarks
功能
StudentMarks memory newMarks = StudentMarks(_maths, _science);
records[msg.sender].push(newMarks);
然后你只需要构建你的 getMarks 策略,例如你可以通过索引来完成。