我想修改一些变量状态 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
.
我希望修改 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
.