news 2026/6/23 2:36:24

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/23 19:39:04

Jsp的四种作用域(超详细)

在 JSP 中,作用域(Scope) 是指 JSP 内置对象(如request、session、application、pageContext)中存储的数据的有效范围,它决定了数据能在哪些组件、哪些请求或哪些用户之间共享。JSP 共有四种核心作用域&…

作者头像 李华
网站建设 2026/6/18 22:33:24

vue自定义组件this.$emit(“refresh“);

在Vue中,组件间的通信通常通过事件系统来实现。当你想要在自定义组件中触发一个事件,以便父组件能够监听到这个事件并作出响应,你可以使用$emit方法。下面是如何在自定义组件中触发一个名为refresh的事件的步骤: 在子组件中触发事…

作者头像 李华
网站建设 2026/6/17 5:01:41

如何快速启用WPS宏功能:VBA 7.1免费安装终极指南

如何快速启用WPS宏功能:VBA 7.1免费安装终极指南 【免费下载链接】VBA7.1安装包及安装方法 本仓库提供了一个重要的资源文件:**VBA 7.1 各国语言安装包**。该安装包是随 Office 一起发布的独立安装包,非常珍贵。它特别适用于那些使用 WPS 但没…

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

电缆护层保护器的差异化!

电缆护层保护器是保障电力电缆系统安全稳定运行的核心防护设备,其多样化设计可精准匹配不同应用场景的差异化防护需求。应用场景覆盖极为广泛,囊括中低压配网电缆、高压输电电缆、海底特种电缆、轨道交通专用电缆及化工/矿山等特殊恶劣环境的电缆线路&am…

作者头像 李华
网站建设 2026/6/19 17:28:12

计组:一些记忆点和题

程序的局部性原理 程序的局部性原理是计算机体系结构的核心原理之一,是 Cache、虚拟内存等技术的设计基础,指程序在执行过程中,倾向于访问局部范围内的指令和数据,具体分为时间局部性和空间局部性两类。 类型核心概念典型场景时…

作者头像 李华
网站建设 2026/6/22 16:09:20

35、开源项目非营利组织运营指南

开源项目非营利组织运营指南 在开源项目的发展中,成立非营利基金会是许多项目推动自身发展的重要途径。许多启动了非营利基金会的开源项目会在网上公开其成立文件,例如可以在 http://apache.org/foundation/bylaws.html 查看 Apache 基金会的章程。 免税资格申请 慈善非营…

作者头像 李华