Solidity v0.6.0带来的那些变化, 一起来看看.
这是中文世界里,唯一保持更新的 Solidity 文档了.
文档地址不变,依旧是https://learnblockchain.cn/docs/solidity/
Solidity每一次中版本号(第2个数变化)升级都会带来一些不兼容的大变化:不管是升级到0.5.0还是这一次升级到Solidity v0.6.0.
详细看看这一次带来的那些变化:
抽象合约必须要使用关键字 abstract
标记,没有实现的函数必须标记为 virtual
,覆盖函数必须要标记 override
可以查看 抽象合约
length
现在是只读的,不可以修改值来改变数组的大小.
必须通过函数 push()
, push(value)
或 pop()
.push(value)
没有返回值了(之前返回数组长度), 数组长度只能通过 length
返回.x[start:end]
来访问数组中的一些元素.可以查看数组的详细文档
加入了 try/catch 语句 使您可以对失败的外部调用做出反应.
原来未命名的函数通常称为 fallback 函数
,现在拆分为一个使用 fallback
关键字定义的回退函数 和 使用关键字 receive
定义的接收以太函数.
如果没有 receive
函数同样会去调用 fallback 函数
, 查看文档 receive接收以太函数
address 类型可以使用payable(x) 转换为 address payable
类型;
struct
和 enum
类型可以在文件级别声明.
例如使用800 gas, 附加10wei调用info, 语法如下:
feed.info{value: 10, gas: 800}();
可以查看文档 外部调用
使用create创建合约时, 合约的地址会随nonce变化, 现在可以通过提供一个slat
选项来使用 create2 创建合约, 这样合约地址总是可以预期.
文档 create2 创建合约
通过 .address
可以获得一个外部函数所在的合约地址.
如果基类合约声明了某个非 private 的状态变量,子合约中就不能再声明同名状态变量。
总结一下 0.6.0 的修改, 功能更强大, 语义更明确了.
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!