首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体中的bytes32返回数组

实体中的bytes32返回数组
EN

Ethereum用户
提问于 2018-01-12 04:48:34
回答 3查看 3.1K关注 0票数 6

如何从可靠的函数返回数组。职能是:

代码语言:javascript
复制
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;  
}
EN

回答 3

Ethereum用户

回答已采纳

发布于 2018-01-15 04:17:55

这个密码对我有用。

代码语言:javascript
复制
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;
} 
票数 2
EN

Ethereum用户

发布于 2018-01-12 11:34:49

问题在于返回一个不支持的动态数组(请看这里)。

一种选择是返回一个固定大小的数组。

代码语言:javascript
复制
function getTrackDetailsNew(bytes32 _iswc) public constant returns(bytes32[10] isrc) {  
    ...
}

但是,这在某种程度上是有限的,因为您被固定大小的数组卡住了。

另一种方法可以是将动态isrc数组保持在公共状态变量中,在函数执行后可以查询该变量。

票数 2
EN

Ethereum用户

发布于 2018-08-12 13:19:19

如果您需要将数据从链外返回(而不是在契约调用中),您可以简单地迭代公共数组的条目。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/35961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档