我希望在isValid if-else语句中修改映射值isUsed
,并在if else的基础上返回一个布尔值
我尝试在函数声明中包含view关键字,但结果没有改变
function createVoucher(string val )public
{ var stud= VKey[val];
isKey[val]=true;
stud.key=val;
stud.count=1 }
function isValid(string val)public view returns(bool){
if(isKey[val] && isUsed[val]==false)
{var stud=VKey[val];
isKey[val]=false;
stud.count=stud.count--;
isUsed[val]=true;
return true;}
else return false }}
`
我希望创建的凭证在第一次调用isValid()时将返回true,而在随后的调用中将返回false
答案 0 :(得分:0)
isValid
被声明为view
函数,因此,当您调用它时,代码仅在一个节点上本地执行,并且没有交易添加到区块链。这意味着它不能改变任何状态。
如果您希望函数更改存储值,则需要删除view
修饰符。但是请注意,事务没有返回值,因此您将不再能够获取布尔值。相反,您可能想要发出事件或使用单独的功能来检查isUsed
。