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

Solidity中如何从返回多变量的函数中仅提取所需值

Solidity多返回值指定变量提取方案

你不需要先接收全部7个变量,Solidity原生支持在多返回值解构时用空白占位符跳过不需要的返回值,既可以避免未使用变量警告,还能降低不必要的gas消耗。

首先修正原代码的两处笔误:

  1. Solidity无符号整数类型关键字为uint,你代码中接口定义、变量声明里写的unit会导致编译失败,需要先替换修正
  2. 函数内声明string类型变量时需要显式标注数据位置为memory

具体实现

你需要的d5是getData()函数的第5个返回值,解构赋值时前4个返回值留空占位,第5位声明你需要的d5变量,最后2个返回值也留空即可,修正后的doSomething函数代码如下:

function doSomething() external {
    // 顺序对应返回值位置,不需要的返回值直接留空跳过
    (, , , , string memory d5, , ) = keepData.getData();
    // 后续直接使用d5即可,无未使用变量警告
}

扩展说明

  • 占位的逗号不能省略,必须严格对应返回值的顺序和数量,空位置对应你不需要接收的返回值
  • 如果你后续需要提取多个非连续返回值,同样可以用该方式实现,比如需要提取第一个返回值d1和最后一个返回值d7,写法如下:
(uint d1, , , , , , address d7) = keepData.getData();
  • 该写法相比接收全部返回值的写法,节省了多余变量的声明、存储成本,gas开销更低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:15:03