环境说明: Ide:在线remix Solidity IDE
语言:solidity solidity
版本号:0.4.20
Tip:如果一点都不懂的建议从头开始看
运行结果截图我不赘述,所有合约代码均通过个人检测。请按照标准进行操作,如出问题检测是否网络连得上外网,且操作按照第一节内容类似操作;由于版本更新,可能会出现不同,但该教材代码均适用于在0.4.20 版本使用


modifier 为函数的修改器,可以为一个函数控制其中逻辑。修改器为属性,可以继承和重写。

函数修改器可以很方便的控制器逻辑,让项目结构清晰合理。其实如果浅显的看,和tp框架的前置操作有异曲同工之妙。

代码如下:

pragma solidity ^0.4.20;
contract Test{
uint256 a;
modifier modifierfunc(uint256 value){
require(value >= 10);
_;
}
function set(uint256 x)public modifierfunc(x){
a=x;
}
function get() public constant returns(uint256){
return a;
}
}

首先声明solidity版本号

定义合约函数,名为Test,这里和上一节都一样、

接下来声明一个uint256变量a


uint256 a;


接下来定义一个函数修改器:


modifier modifierfunc(uint256 value){
require(value >= 10);
_;
}


其中关键字为 ​modifier

函数修改器名为 ​modifierfunc

这个函数修改器接收一个 ​uint256​ 类型的参数 ​value

其中​require​为检查输入是否满足要求

require(value >= 10);​ 其中value是否大于等于10,如果没有则抛出错误

接下来是一个占位符下划线,表示接下来要执行的代码,意思说还有执行完后如果没有错误将会执行下面的代码。

set​函数:


function set(uint256 x)public modifierfunc(x){
a=x;
}


其中是一个名为​set​ 的方法,接收一个​uint256​类型的参数x

用​public​修饰符修饰整个函数

并且用函数修改器修饰这个函数,这个函数修改器是​modifierfunc

并且接收参数为之前​set​函数接收的参数​x

函数内容为 ​a=x

把键入的x的值给予合约属性​a​变量

get​函数:


function get() public constant returns(uint256){
return a;
}


在这里​get​函数为​public​类型

用​constant​修饰这个函数表示未进行修改变量

返回值为​uint256​,用​returns​修饰返回值类型

最后返回:​return a;

最终部署运行:不会的看​​第一篇​

记得一定要解锁钱包,不会的看第一篇

solidity modifier函数修改器 智能合约开发知识浅学(三)_版本号

如果这一段不会请看​​第一篇​

部署后调用函数:

solidity modifier函数修改器 智能合约开发知识浅学(三)_修饰符_02

展开合约后,点击set输入11,点击get调用合约函数将会返回11

假设输入小于10的数,则会报错