Solidity 中文文档更新到0.6.4

  • Tiny熊
  • 更新于 2020-03-13 00:05
  • 阅读 3219

Solidity v0.6.0带来的那些变化, 一起来看看.

这是中文世界里,唯一保持更新的 Solidity 文档了. 

文档地址不变,依旧是https://learnblockchain.cn/docs/solidity/

Solidity每一次中版本号(第2个数变化)升级都会带来一些不兼容的大变化:不管是升级到0.5.0还是这一次升级到Solidity v0.6.0.

详细看看这一次带来的那些变化:

抽象合约

抽象合约必须要使用关键字 abstract标记,没有实现的函数必须标记为 virtual ,覆盖函数必须要标记 override

可以查看 抽象合约

数组

  1. 数组的 length 现在是只读的,不可以修改值来改变数组的大小. 必须通过函数 push(), push(value)pop() .
  2. push(value) 没有返回值了(之前返回数组长度), 数组长度只能通过 length返回.
  3. 数组支持切片访问,在calldata的参数上,可以用 x[start:end] 来访问数组中的一些元素.

可以查看数组的详细文档

try/catch

加入了 try/catch 语句 使您可以对失败的外部调用做出反应.

拆分回退函数

原来未命名的函数通常称为 fallback 函数 ,现在拆分为一个使用 fallback 关键字定义的回退函数 和 使用关键字 receive 定义的接收以太函数.

如果没有 receive 函数同样会去调用 fallback 函数, 查看文档 receive接收以太函数

payable类型

address 类型可以使用payable(x) 转换为 address payable 类型;

文件级别的类型声明

structenum 类型可以在文件级别声明.

附加gas 和value 语法改变

例如使用800 gas, 附加10wei调用info, 语法如下: feed.info{value: 10, gas: 800}();

可以查看文档 外部调用

使用 create2 创建合约

使用create创建合约时, 合约的地址会随nonce变化, 现在可以通过提供一个slat选项来使用 create2 创建合约, 这样合约地址总是可以预期.

文档 create2 创建合约

外部函数多了一个成员 .address

通过 .address 可以获得一个外部函数所在的合约地址.

同名状态变量覆盖

如果基类合约声明了某个非 private 的状态变量,子合约中就不能再声明同名状态变量。

总结一下 0.6.0 的修改, 功能更强大, 语义更明确了.

点赞 1
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Tiny熊
Tiny熊
0x1231...6564
登链社区发起人 登链团队对 DEFI 应用有深刻的理解和丰富的开发经验,如果你有开发、审计、培训合作等需求, 加我微信:xlbxiong 。 咨询问题在问答区提问即可,微信好友太多,不看问题,请凉解~