gpt4 book ai didi

javascript - 当结构具有两个以上参数时,带有 array.push() 的 Solidity 函数不起作用

转载 作者:行者123 更新时间:2023-12-05 07:37:59 25 4
gpt4 key购买 nike

我已经通过 remix 将具有以下推送功能的合约部署到我的本地私有(private)链。

struct TestComplex{
address testValue;
address delegate;
uint testInt;
}
TestComplex[] testArray;
function setTestArrayByPush( address _delegate, address _testAddr, uint _testInt) public {
testArray.push(TestComplex( {
testValue:_testAddr,
delegate: _delegate,
testInt: _testInt
} ));
}

如果我通过 web3Provider@remix 调用它,它工作正常,但是当我通过 geth 控制台或通过 JS 脚本调用它时 contractInstance.setTestArrayByPush(<Add1>, <Add2>,<Int>) ,它不会将任何东西插入数组。当我从 TestComplex 结构中删除一个属性时,函数更改如下。它适用于 geth 和 remix。

function setTestArrayByPush(address _testAddr, uint _testInt) public {
testArray.push(TestComplex( {
testValue:_testAddr,
testInt: _testInt
}));
{
}

所以我想知道 remix 函数调用和 geth 控制台有什么区别?我怎样才能将两个以上的参数传递到我的 Dapp 中的 stuct 数组中?

最佳答案

这很好用:

pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;


contract Test {

struct TestComplex{
address testValue;
address delegate;
uint testInt;
}

TestComplex[] public testArray;


function setTestArrayByPush( address _testValue, address _delegate, uint _testInt) public {
testArray.push(TestComplex(
_testValue,
_delegate,
_testInt
) );
}

function getTestComplex () public view returns ( TestComplex[] memory) {
return testArray ;
}

关于javascript - 当结构具有两个以上参数时,带有 array.push() 的 Solidity 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48257432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com