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

Solidity中返回无符号整数数组的正确函数定义是什么?

Solidity中返回无符号整数数组的正确函数定义形式

在Solidity中,返回无符号整数(uint)数组的函数定义需要明确指定数组类型及存储位置(memory/storage),以下是不同场景下的正确写法:

1. 返回内存中的动态数组(最常用,适合外部调用)

这是对外暴露的函数最常见的写法,返回的是在内存中创建的数组副本:

// Solidity 0.8.x 及以上版本示例
function getUintArray() public view returns (uint[] memory) {
    // 创建一个长度为3的uint动态数组
    uint[] memory result = new uint[](3);
    result[0] = 10;
    result[1] = 20;
    result[2] = 30;
    return result;
}

2. 返回合约存储中的数组

如果要返回合约状态变量中的数组,有两种方式:

方式1:返回内存副本(适合外部调用)

// 合约状态变量
uint[] public storedUintArray;

function getStoredArray() public view returns (uint[] memory) {
    return storedUintArray;
}

方式2:返回storage引用(仅内部/私有函数使用,节省Gas)

内部函数可以直接返回存储数组的引用,避免复制数组的开销:

function getStoredArrayRef() internal view returns (uint[] storage) {
    return storedUintArray;
}

3. 返回固定长度数组

如果是固定长度的无符号整数数组,定义时指定长度即可:

function getFixedUintArray() public pure returns (uint[3] memory) {
    return [uint(1), 2, 3];
}

关键注意点

  • 必须明确标注数组的存储位置:外部调用的函数只能返回memory类型数组;内部函数可返回storage引用。
  • uint是uint256的别名,若需要特定位数的无符号整数,可替换为uint8/uint16等,数组写法同理(如uint8[] memory)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:57:20