news 2026/6/10 3:51:14

Solidity函数修改器中包含return的执行顺序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Solidity函数修改器中包含return的执行顺序

关键概念

在 Solidity 中,如果在修改器中执行return,会立即终止当前函数的执行,不会执行目标函数体,但会执行修改器中_;之后的代码。

执行顺序详解

基本执行流程

// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract ModifierReturn { uint256 public value; string public message; modifier withReturnCheck() { value = 1; message = "Before _"; // 如果满足条件,直接返回 if (msg.sender != address(0x123)) { value = 99; // 这会被设置 message = "Early return"; // 这会被设置 return; // 立即返回,不会执行目标函数 } _; // 如果上面没有return,这里会执行目标函数 value = 3; // 只有在没有提前return且目标函数执行完成后才会执行 message = "After _"; } function testFunction() public withReturnCheck { value = 2; message = "In function"; } }

不同情况的分析

情况1:在_;return

contract ReturnBeforeUnderscore { uint256 public step = 0; modifier mod1() { step = 1; if (true) { step = 10; return; // 立即返回 } _; // 不会执行 step = 3; // 不会执行 } function test1() public mod1 { step = 2; // 不会执行 } // 调用 test1() 后: step = 10 }

情况2:在_;return

contract ReturnAfterUnderscore { uint256 public step = 0; bool public flag = false; modifier mod2() { step = 1; _; // 执行目标函数 step = 3; if (!flag) { step = 4; return; // 提前结束修改器 } step = 5; // 不会执行 } function test2() public mod2 { step = 2; flag = true; } // 调用 test2() 后: step = 4, flag =
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 2:25:41

为什么90%的量子计算项目都缺这个VSCode扩展?真相曝光

第一章:量子模拟器的 VSCode 扩展开发 Visual Studio Code(VSCode)作为现代开发者广泛使用的代码编辑器,其强大的扩展生态系统为特定领域工具的集成提供了便利。在量子计算领域,构建一个支持量子算法编写、语法高亮、电…

作者头像 李华
网站建设 2026/6/9 18:26:07

46、虚拟操作系统安装与配置全攻略

虚拟操作系统安装与配置全攻略 在当今的技术领域,虚拟操作系统的应用越来越广泛。无论是进行实验、开发还是学习,虚拟环境都提供了一个便捷且安全的方式。本文将详细介绍在 VirtualBox 中安装 Fedora 13 以及在 VMware 中安装 Windows 7 的具体步骤和相关配置。 在 Virtual…

作者头像 李华
网站建设 2026/6/10 15:49:38

【大数据毕设选题】基于Hadoop的豆瓣电影用户行为分析系统源码,Python+Spark完整实现方案 毕业设计 选题推荐 毕设选题 数据分析 机器学习

✍✍计算机毕设指导师** ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡有什么问题可以…

作者头像 李华
网站建设 2026/6/10 7:03:50

保姆级教程:从0手写RAG智能问答系统,接入Qwen大模型|Python实战

在大模型落地的众多路径中,RAG(检索增强生成)是几乎“最值得掌握”的一项技术。它将知识库与大模型结合,让模型不仅“知道”,还能“答得准、说得清”。在前两期课程中,我们基于Dify平台完成了RAG系统的快速…

作者头像 李华
网站建设 2026/6/10 18:26:10

1小时打造Postman错误监控看板

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 构建Postman错误监控看板原型:1. 错误日志收集接口 2. 实时分类统计图表 3. 阈值告警功能 4. 团队协作视图 5. 历史错误查询。要求使用Next.js实现,集成Kimi…

作者头像 李华