- Solidity 教程
- Solidity - 主页
- Solidity - 概述
- Solidity - 环境设置
- Solidity - 基本语法
- Solidity - 首次应用
- Solidity - 评论
- 坚固性 - 类型
- Solidity - 变量
- Solidity - 可变范围
- Solidity - 运算符
- 坚固性 - 循环
- Solidity - 决策
- 坚固性 - 弦乐
- Solidity - 数组
- Solidity - 枚举
- Solidity - 结构
- Solidity - 映射
- 坚固性 - 转换
- Solidity - 以太币单位
- Solidity - 特殊变量
- Solidity - 风格指南
- 实体函数
- Solidity - 函数
- Solidity - 函数修饰符
- Solidity - 查看函数
- Solidity - 纯函数
- Solidity - 后备函数
- 函数重载
- 数学函数
- 加密函数
- Solidity 常见模式
- Solidity - 提款模式
- Solidity - 限制访问
- 坚固进阶
- Solidity - 合约
- 坚固性——继承
- Solidity - 构造函数
- Solidity - 抽象合约
- Solidity - 接口
- Solidity - 库
- 坚固性 - 装配
- Solidity - 活动
- Solidity - 错误处理
- Solidity 有用资源
- Solidity - 快速指南
- Solidity - 有用的资源
- 坚固性 - 讨论
Solidity - 函数修饰符
函数修饰符用于修改函数的Behave。例如,为函数添加先决条件。
首先我们创建一个带或不带参数的修饰符。
contract Owner { modifier onlyOwner { require(msg.sender == owner); _; } modifier costs(uint price) { if (msg.value >= price) { _; } } }
函数体插入特殊符号“_;”的位置 出现在修饰符的定义中。因此,如果调用该函数时满足修饰符的条件,则执行该函数,否则将引发异常。
请参阅下面的示例 -
pragma solidity ^0.5.0; contract Owner { address owner; constructor() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } modifier costs(uint price) { if (msg.value >= price) { _; } } } contract Register is Owner { mapping (address => bool) registeredAddresses; uint price; constructor(uint initialPrice) public { price = initialPrice; } function register() public payable costs(price) { registeredAddresses[msg.sender] = true; } function changePrice(uint _price) public onlyOwner { price = _price; } }