我正在经营一份简单的混合合同。我在我的合同中有一个事件,它将被发出来检查stateVariables的值。
contract stateVariable{
uint stateVariable1=10;
uint stateVariable2=20;
uint stateVariable3=30;
event log(uint stateVariable);
function display() public
{
//emit log(stateVariable1,stateVariable2,stateVariable3);
emit log(stateVariable1);
emit log(stateVariable2);
emit log(stateVariable3);
}}
我的问题是关于Remix中发出的日志的格式。为什么下面的日志信息包含"0“:"10”?它是显示参数数和值的东西吗?
{ "from":“0x0dcd2f7523c41875e259e00bb44fd505297caf”,“>>”>> "event":"log","args":{ "0":"10","stateVariable":"10","length":1 },
当我试图显示所有三个stateVariables时,它如下所示:
"args":{ **"0":"10","1":"20","2":"30",** "stateVariable1":"10","stateVariable2":"20","stateVariable3":"30",“长度”:3}
发布于 2018-12-11 06:07:56
看起来remix正在使用事件参数索引("0" : ..., "1": ..., ...)和参数计数("length")扩展args对象。当直接使用web3时,您只会看到"args": { "stateVariable": "10" }。详情请参见https://web3js.readthedocs.io/en/1.0/web3-eth-contract.html#contract-events-return。
发布于 2018-12-11 04:35:08
在软件和编程中,索引通常从0开始。因此,第一个事件实际上位于索引0,这里等于10。
https://ethereum.stackexchange.com/questions/63915
复制相似问题