Solidity 教程系列11 - 视图函数、虚函数讲解

汇新云】为大家定期更新文章,【汇新云】IT人的产业链平台


Solidity 教程系列第11篇 - Solidity 视图函数、虚函数讲解。

Solidity 系列完整的文章列表请查看分类-Solidity

写在前面

Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解,

如果你还不了解,建议你先看以太坊是什么

视图函数(View Functions)

一个函数如果它不修改状态变量,应该声明为view函数,不过下面几种情况认为是修改了状态:

写状态变量

触发事件(events)

创建其他的合约

call调用附加了以太币

调用了任何没有viewpure修饰的函数

使用了低级别的调用(low-level calls)

使用了包含特定操作符的内联汇编

看一个例子:



有几个地方需要注意一下:

声明为view 和声明为constant是等价的,constant是view的别名,constant在计划Solidity 0.5.0版本之后会弃用(constant这个词有歧义,view 也更能表达返回值可视)。

访问函数都被标记为view。

当前编译器并未强制要求声明为view,但建议大家对于不会修改状态的函数的标记为view。

纯函数(Pure Functions)

函数可以声明为view,表示它即不读取状态,也不修改状态,除了上一节介绍的几种修改状态的情况,以下几种情况被认为是读取了状态:

读状态变量

访问了 this.balance 或 \

.balance

访问了blocktxmsg 的成员 (msg.sig 和 msg.data除外).

调用了任何没有pure修饰的函数

使用了包含特定操作符的内联汇编

看一个例子:


尽管view 和 pure 修饰符编译器并未强制要求使用,view 和 pure 修饰也不会带来gas 消耗的改变,但是更好的编码习惯让我们跟容易发现智能合约中的错误。

参考文献

官方文档-函数


学好区块链,拥抱新未来:

区块链产品经理(点击入驻),和圈内人士混个脸熟


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值