我写了具有映射的智能合约。我在事务中的映射中存储了一些键/值对。当我尝试在另一个事务中打印映射时,先前事务中存储的数据不是永久存储的。如何将数据永久保存在映射数据结构中,以使其也反映在其他事务中?
pragma solidity >=0.4.0 <0.6.0 ;
contract mrks
{
mapping(uint => string) public var ;
function assign(uint it, string memory str) public
{
var[it] = str ;
}
function display(uint it) returns(uint)
{
return var[it] ;
}
}
这是示例代码。如果我给它= 1,str =“ John”,并且在另一个事务中,当我在显示函数中给1作为参数时,它不是给“ John”作为输出。
这个问题可能很愚蠢。请帮我 。
答案 0 :(得分:1)
您将映射命名错误,var
是Solidity中的保留关键字,不能用作任何数据结构的名称。另一个问题是映射返回string
,但是您的display
函数返回int
。我已经解决了两个问题,下面是结果代码。
pragma solidity >=0.4.0 <0.6.0 ;
contract mrks {
mapping(uint => string) public testMapping;
function assign(uint it, string memory str) public {
testMapping[it] = str ;
}
function display(uint it) returns(string) {
return testMapping[it];
}
}
答案 1 :(得分:0)
在尝试通过另一笔交易获取价值之前,请确保已正确开采了第一笔储值交易。