如何从可靠的函数返回数组。职能是:
function getTrackDetailsNew(bytes32 _iswc) public constant returns(bytes32[] isrc) {
bytes32 s;
for(uint8 i=0;i<count;i++) {
s = track[isrcKeyArray[i]].iswc;
if(s == _iswc) {
isrc[i] = isrcKeyArray[i];
}
}
return isrc;
}发布于 2018-01-15 04:17:55
这个密码对我有用。
function getTrackDetailsByIswc(bytes32 _iswc) public constant returns(bytes32[]) {
getCount(_iswc);
bytes32[] memory isrc = new bytes32[](c);
bytes32 tempiswc;
uint count = KeyArray.length;
uint j;
for (uint8 i=0; i < count; i++) {
tempiswc = track[KeyArray[i]].iswc;
if (tempiswc == _iswc) {
isrc[j] = KeyArray[i];
j++;
}
}
return isrc;
} 发布于 2018-01-12 11:34:49
问题在于返回一个不支持的动态数组(请看这里)。
一种选择是返回一个固定大小的数组。
function getTrackDetailsNew(bytes32 _iswc) public constant returns(bytes32[10] isrc) {
...
}但是,这在某种程度上是有限的,因为您被固定大小的数组卡住了。
另一种方法可以是将动态isrc数组保持在公共状态变量中,在函数执行后可以查询该变量。
发布于 2018-08-12 13:19:19
如果您需要将数据从链外返回(而不是在契约调用中),您可以简单地迭代公共数组的条目。
https://ethereum.stackexchange.com/questions/35961
复制相似问题