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

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

环境说明: 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; }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

首先声明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;

最终部署运行:不会的看第一篇
记得一定要解锁钱包,不会的看第一篇
部署运行

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

部署后调用函数:
在这里插入图片描述
展开合约后,点击set输入11,点击get调用合约函数将会返回11
假设输入小于10的数,则会报错

文章来源: i1bit.blog.csdn.net,作者:A757291228,版权归原作者所有,如需转载,请联系作者。

原文链接:i1bit.blog.csdn.net/article/details/85149152

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。