lemooljiang avatar

波场中返回数组 / 学习智能合约#43

lemooljiang

Published: 16 Jul 2021 › Updated: 16 Jul 2021

波场中返回数组 / 学习智能合约#43

因为波场中的TVM中还只是支持solidity 0.5的版本,在返回数组类型的值时还是不方便。在新版的solidity 0.8的版本中已经不用特别声明了,但是在波场中还是很麻烦,因为它还没有更新到新版本。看来波场要加油抄啊!

returns(address[] memory)比如这个返回值,在波场中还不支持,必须在最前头加上pragma experimental ABIEncoderV2;才可执行。这也导致了在返回一个结构体数值时会遇上麻烦!

    struct TaskMessage 
    {
        string hash;
        address promoter;
        address hunterA;
        address token;
        address[] hunters;
        string[] reasonHashs;
        uint256 bonus;
        uint256 taskStart;
        uint256 taskDeadLine;
        State state;
    }

    mapping(uint256 => TaskMessage) public tasks;

如上代码,public属性的函数会自动生成一个getter函数,所以不必特别再去定义一个函数去获取它的值,是可以直接取出来的。这在以太坊中没什么问题,但在波场中却还是一大问题,因为无法获取上述结构体中hunters值!所以,必须再定义一个获取数据的函数,如下所示:

function getHunters(uint256 uid) 
        public 
        view 
        returns(address[] memory)
    {
        return tasks[uid].hunters;
    }

现在处于多链的时代,但明显感到波场有些落伍了,事实上也确实如此。现在都有些不太情愿在波场上开发了,更愿意玩polygon。只是希望波场不要落后太多,也多开放些基金以支持生态的发展。

Leave 波场中返回数组 / 学习智能合约#43 to:

Written by

Designer , Poet , Technology enthusiasts

Read more #smartcontract posts


Best Posts From lemooljiang

We have not curated any of lemooljiang's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From lemooljiang