solidity 0.8版本更新 / 学习智能合约#46

in STEEM CN/中文3 years ago

solidity版本更新的速度很快啊,半年没玩,就有点跟不上进度了!查看了下新的版本,现在已到0.8.7,也有不少的更新:集成的SafeMath和新的错误处理。

手册

SafeMath

solidity在0.8版本以前需要引入SafeMath库以避免计算时溢出,但在0.8版本以后自身已经集成了,则无需再引入。下面简单地测试下,

//SafeMath是从左到右开始计算的: + add  - sub  * mul  / div
uint a = 2;
uint b = 5;
uint c = 23;
(a+b)*c -> a.add(b).mul(c)

//0.8版本以后
uint x = 0;
x--;  //出错,会回滚

unchecked { ... }不检查溢出,
  uint x = 0;
  unchecked { x--; }  //返回最大值 type(uint).max

uint a = 2;
uint b = 5;
uint c = 23;
return a + b * c;   ->117
return (a + b) * c; ->161
return a * b + c;   ->33
return  b / a + c;  ->25
return c / (a + b); ->3 

自身集成了SafeMath终归是件好事,使用起来更适合小学生水平。其它的一些特点注意下倒也没什么太大变化。

Coin Marketplace

STEEM 0.28
TRX 0.13
JST 0.032
BTC 60719.63
ETH 2911.16
USDT 1.00
SBD 3.59