You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在单个Solidity getter函数中返回多个数组?

Solidity函数能否返回多个数组?

这个问题出现两种完全相反的答案,核心原因是Solidity版本迭代带来的语法变化:

旧版本限制(Solidity 0.4.x及更早)

在早期的Solidity版本中,确实无法在单个函数里直接返回多个动态数组,当时的编译器对返回值的处理有严格限制,只能返回单个数组,或者多个非数组类型的值。那个认为“不可实现”的答案,就是基于这个时期的版本规则。

新版本支持(Solidity 0.5.x及之后)

随着Solidity版本更新,从0.5.0开始,编译器放宽了返回值的限制,现在已经可以在单个函数中返回多个数组(包括动态数组和固定长度数组)。

举个实际的代码示例:

pragma solidity ^0.8.0;

contract MultiArrayReturn {
    function returnTwoArrays() public pure returns (uint[] memory, string[] memory) {
        // 初始化第一个uint类型动态数组
        uint[] memory numArray = new uint[](3);
        numArray[0] = 10;
        numArray[1] = 20;
        numArray[2] = 30;

        // 初始化第二个string类型动态数组
        string[] memory strArray = new string[](2);
        strArray[0] = "foo";
        strArray[1] = "bar";

        // 返回两个数组
        return (numArray, strArray);
    }
}

现在在Solidity 0.8.x的主流版本中,这种写法完全合法,编译和调用都不会有问题。

内容的提问来源于stack exchange,提问作者WHOATEMYNOODLES

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:17:03