035.Solidity入门——22 payable

payable 关键字用于声明一个函数或合约可以接收代币的转账,当 payable 关键字用于函数声明时,该函数可以被调用者附带一定数量的代币,从而执行一些特殊的操作。

示例代码:


contract MyContract {
    
    // 定义一个 payable 函数,接收转账
    function myPayableFunction() public payable {
        // 在函数体内进行一些操作,例如修改数据等
    }
    
    // 定义一个函数,将代币转账到指定的地址
    function sendEther(address payable _to) public payable {
        // 检查合约余额是否充足,以及传入的 _to 地址是否有效
        require(address(this).balance >= msg.value && _to != address(0));
        // 将代币转账到指定地址
        _to.transfer(msg.value);
    }
}

注:

myPayableFunction: 声明时使用了 payable 关键字,表示该函数可以接收代币的转账。函数体内的操作可以根据实际需要进行修改。

sendEther: 函数中 address payable类型来表示可接收代币的地址。 require 语句来确保合约余额充足且传入的 _to 地址有效,满足条件后使用 transfer 函数将代币转账到指定地址。

使用 payable 函数会影响合约的 gas 费用。当外部账户调用 payable 函数时,需要支付 gas 费用来执行该函数。如果没有足够的 gas 费用,函数将无法执行。合约内部不能直接发送代币到普通地址(不具备接收代币能力的地址),否则将导致转账失败并消耗 gas 费用。如果需要将代币发送到普通地址,可以使用 selfdestruct 函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值