我真的不明白 payable() 我应该使用
contract(){
receive() {
somefunction()
}
somefunction() payable external{
}
Run Code Online (Sandbox Code Playgroud)
或者使用就足够了
contract(){
somefunction() payable external{}
}
Run Code Online (Sandbox Code Playgroud)
它们是否需要一起使用 - 我们使用回退功能和一些正常的应付修饰符,两者使用或仅使用回退或仅使用某些功能有什么区别?如果有 2 个需要修饰符的函数怎么办,你能给我一些例子吗?
小智 15
payable修饰符的存在意味着该函数可以处理非零 Ether 值的交易。如果一笔传输 Ether 的交易来到合约并调用某个函数 X,那么如果该函数 X 没有payable修饰符,那么该交易将被拒绝。回退函数旨在处理合约中的交易中根本没有调用任何函数的情况(例如,交易只是传输以太币),或者调用了不在合约中的函数。在这种情况下,与上面描述的类似 - 如果后备函数具有应付修饰符,那么它将能够接受以以太币传输的交易,如果没有,那么它们将被拒绝。
因此,在您的情况下,如果交易中正在传输以太币,则函数somefunction将被成功调用,而当调用接收函数时,交易将被拒绝。
contract(){
receive() {
somefunction()
}
somefunction() payable external{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13536 次 |
| 最近记录: |