Solidity的Function Modifiers(P.S. 0.4.17版本)
来源:互联网 发布:区县网络社会组织调研 编辑:程序博客网 时间:2024/06/06 01:33
开门见山
1. modifiers后面定义的是带有条件的一种状态
先做一个提示代码示例中有throw之类都是老版本的智能合约文章,需要使用require代替
2. 用的时候写在符合要求就需要执行的代码集前面,如果不满住后面(这个后面基本上是这个function的域)的程序将不会被执行
解释与说明,官话带感
Modifiers可以被用来轻松的改变函数的行为。
举一个例子,我们可以自动检查(合约自己检查)一个优先条件来执行程序。
Modifiers是可以被继承的合约属性,同时可以被派生合约重写(overridden)。
pragma solidity ^0.4.11;contract owned { function owned() { owner = msg.sender; } address owner; modifier onlyOwner { require(msg.sender == owner); _; }}contract mortal is owned { function close() onlyOwner { selfdestruct(owner); }}contract priced { modifier costs(uint price) { if (msg.value >= price) { _; } }}contract Register is priced, owned { mapping (address => bool) registeredAddresses; uint price; function Register(uint initialPrice) { price = initialPrice; } function register() payable costs(price) { registeredAddresses[msg.sender] = true; } function changePrice(uint _price) onlyOwner { price = _price; }}contract Mutex { bool locked; modifier noReentrancy() { require(!locked); locked = true; _; locked = false; } function f() noReentrancy returns (uint) { require(msg.sender.call()); return 7; }}
如果同一个函数有多个修改器,他们之间以空格隔开,修饰器会依次检查执行。
需要注意的是,在Solidity的早期版本中,有修改器的函数,它的return语句的行为有些不同。
在修改器中和函数体内的显式的return语句,仅仅跳出当前的修改器和函数体。返回的变量会被赋值,但整个执行逻辑会在前一个修改器后面定义的"_"后继续执行。
修改器的参数可以是任意表达式。在对应的上下文中,所有的函数中引入的符号,在修改器中均可见。但修改器中引入的符号在函数中不可见,因为它们有可能被重写。
阅读全文
0 0
- Solidity的Function Modifiers(P.S. 0.4.17版本)
- 【Solidity】1.一个Solidity源文件的布局
- Solidity的CURD
- Number(p,s)的认识....
- ORACLE的Number(p,s)
- Number(p,s)的使用
- Number(p,s)的意义 !
- C++ *p &a p->function() 之间的意义
- Solidity 数组 (Arrays)
- Solidity学习(1)
- Solidity学习(2)
- Solidity学习(3)
- Solidity(4)
- 【RQNOJ】【图论】宿命的P.S.S
- MATLA的S-FUNCTION用法
- 第一章 Solidity源文件的结构
- char *p="%s"; printf(p);的问题
- MATLAB中的S-Function的用法(C语言)
- jmeter运行报错:org.apache.http.NoHttpResponseException: The target server failed to respond
- 类方法(静态方法)与实例方法(对象方法)
- 01_note_Hadoop集群2.8.1的安装配置, JDK安装, 免密码登录 (CentOS7)
- 你不必知道UX设计的一切
- NS_REFINED_FOR_SWIFT
- Solidity的Function Modifiers(P.S. 0.4.17版本)
- opencv基础知识-AbsDiff
- Spark性能优化:资源调优篇
- Oracle导出dmp文件,Oracle11g导出dmp有空表
- 学习笔记:ES6之正则扩展
- Rightmost Digit
- java学习笔记-Arraylist(1)
- Cesium应用篇:3控件(2)BaseLayerPicker
- 01 初入数字图像处理感想