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

Solidity中修饰器内的_;能否被其他代码包裹?

Solidity修饰器中占位符_;能否被其他代码包围?

可以,Solidity修饰器中的占位符_;完全可以被其他代码包围,它的作用是指代被修饰函数的全部代码逻辑,修饰器中_;前后的代码会分别在函数执行前、执行后运行。

以你给出的示例为例:

modifier foo {
    require(msg.value > 100, "Boo");
    _;
    globVar = 1010;
}

当被这个修饰器修饰的函数被调用时,执行顺序是:

  • 先执行require(msg.value > 100, "Boo");,验证msg.value是否大于100,不满足则回滚交易
  • 执行被修饰函数的全部代码(_;的位置会被替换为目标函数的代码)
  • 最后执行globVar = 1010;,完成全局变量的赋值

这种写法非常实用,常用于实现函数执行前后的权限校验、状态检查、日志记录或状态更新等逻辑。

内容的提问来源于stack exchange,提问作者Nikola Cekić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:07:01