我想修改一些变量状态 return 视图

I want to modify some variable state yet return a view

我希望修改 isValid if-else 语句中的映射值 isUsed 和 return 基于 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() 时 return 为真,在后续调用时为假

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

如果您希望函数更改存储值,则需要删除 view 修饰符。但请注意,交易 没有 return 值 ,因此您将无法再获取布尔值。您可能想要发出事件或使用单独的函数来检查 isUsed.