我想修改一些可变状态但返回视图

时间:2019-06-12 14:36:30

标签: solidity

我希望在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

1 个答案:

答案 0 :(得分:0)

isValid被声明为view函数,因此,当您调用它时,代码仅在一个节点上本地执行,并且没有交易添加到区块链。这意味着它不能改变任何状态。

如果您希望函数更改存储值,则需要删除view修饰符。但是请注意,事务没有返回值,因此您将不再能够获取布尔值。相反,您可能想要发出事件或使用单独的功能来检查isUsed

相关问题