在映射中保留记录(不可覆盖)

问题描述 投票:0回答:1

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 更新了他的标记,则之前的标记将被覆盖。请帮助我如何保留每个消息发送者的标记记录。没有重写。 如果您认为有解决方案,请发表评论。希望我能以正确的方式阐述我的问题。 谢谢你!

保存映射的键值数据而不覆盖之前的条目

arrays mapping solidity overwrite
1个回答
0
投票

嗯,您需要一组记录,而不是单个记录。

mapping(address => StudentMarks[]) public records;

然后是你的

addMarks
功能

StudentMarks memory newMarks = StudentMarks(_maths, _science);

records[msg.sender].push(newMarks);

然后你只需要构建你的 getMarks 策略,例如你可以通过索引来完成。

© www.soinside.com 2019 - 2024. All rights reserved.