[email protected]】值类型—Address

  • address
    • 代表20个字节的值
    • uint160,整形字面值,bytes20,合同类型(catract types)能够转换成address
    • 成员members
      • balance:查看余额
  • address payable
    • address相同
    • 通过payable(…)可将address和合同类型(contract-type)转换成address payable,对于合同类型,需要该合同有接收函数(receive function)或者支付回退函数(payable fallback function)
    • 特例payable(0)是合法的
    • 成员members
      • transfer:发送Ether(以wei为单位)给address payable,在合同中,便是将合同的Ether发送个address payable
        address payable x = payable(0x123);
        address myAddress = address(this);
        if (x.balance < 10 && myAddress.balance >= 10) x.transfer(10);
        
        如果transfer执行失败,比如,当前合同余额不足,接收拒绝,该函数将返回Ether并报错。如果x是一个contract address(该合同地址必须实现Receive Ether Function或者Fallback Function),它以上两种函数将会随着transfer一起调用,无法阻止。
      • send:是一个transfer底层的对应函数,如果出现错误,只会返回false,并不会中断当前合同,推荐使用transfer

addressaddress payable区别:①address payable能够接收ether。②address payable隐式等于address ,而方法payable(<adress>)才等于address payableaddress payable多两个属性成员transfersend

备注:超大整形转换成address,例如bytes32,最好使用方法address(uint160(bytes20(b))),或者address(uint1660(uint256(b)))去转换

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值