四函数修改器《2022 solidity8.+ 版本教程到实战》

Posted 1_bit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四函数修改器《2022 solidity8.+ 版本教程到实战》相关的知识,希望对你有一定的参考价值。

一、函数修改器 modifier

在 solidity 中有一个函数修改器可作为前置、中置或者后置方法,有点像 ASP.NET 中的母版页(最起码差不多十年不碰了,不懂还有没有这个概念),又有点像 Thinkphp 中的前置方法,可以在指定某个函数调用前、中执行该函数,下面是一个示例:

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.6;
contract ModifierTest

   modifier checkAge(uint val)
       require(val<10,"Age < 10");
       _;
   
   modifier checkHeight(uint val)
       require(val>260,"Height < 260");
       _;
   

   function osVal(uint age,uint height) external pure checkAge(age) checkHeight(height)
       age+=1;
   

以上代码中使用 modifier 创建了函数修改器,modifier 之后是对应的函数修改器名称,可以接收参数或者不接收参数,其中的 “_;” 表示使用这个修改器的函数代码位置,例如:

modifier checkHeight(uint val)
       require(val>260,"Height < 260");
       _;
   

在被 osVal 方法调用后,osVal 方法中代码的位置就等于在“_;”位置进行填充。在 osVal 中使用这些修改器只需要再其后说明即可,并且可以传入对应的参数,调用后效果如下:

“三明治”用法:

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.6;
contract ModifierTest
    uint public age=0;
    modifier sandwich()
        age+=1;
        _;
        age+=1;
    

    function osVal() external sandwich()
        age+=1;
    

三明治用法就是用于中间:

以上是关于四函数修改器《2022 solidity8.+ 版本教程到实战》的主要内容,如果未能解决你的问题,请参考以下文章

四函数修改器《2022 solidity8.+ 版本教程到实战》

五构造函数《2022 solidity8.+ 版本教程到实战》

五构造函数《2022 solidity8.+ 版本教程到实战》

五构造函数《2022 solidity8.+ 版本教程到实战》

二基本类型及函数使用《2022 solidity8.+ 版本教程到实战》

二基本类型及函数使用《2022 solidity8.+ 版本教程到实战》