首页 > 其他分享 >回退函数

回退函数

时间:2024-07-23 20:28:39浏览次数:11  
标签:调用 函数 text 主币 uint external 回退

函数

回退函数

写法一:发送主币

fallback() external {}

特点:外部可视,可接受主币发送,调用合约中不存在的函数,就触发该回退函数的逻辑

如果想让该函数可以直接发送主币,需要加上“payable”例如:

fallback() external payable{}

写法二:只接受主币

receive() external payable {}

该写法必须有“payable”。

之后定义一个事件

event Log(string func,address sender, uint value, bytes data);

并在两个函数里写上,在fallback函数里:

emit Log("fallback",msg.sender,msg.value,msg.data);

其中:第一个略,第二个调用者地址,第三个调用该函数时的发送主币数量

第四个是调用时发送的数据

receive函数中:

emit Log("fallback",msg.sender,msg.value,"");

ps:该类型函数不接受数据,所以最后一个的数据改为空字符串

使用:部署后,没有可用外部按钮,需要手动在VALUE处输入主币数量,然后在CALLDATA处输入一个十六进制的数据,之后点击Transact才会调用"fallback"函数,因为msg.data有数据了。如果直接输入主币之后点击Transact就会调用”receive“函数

调用其他合约函数

设置合约A、B,在合约B中设置一些函数,例如:

 uint public value = 123;
    uint public x;
    function setX(uint _x)external {  
        x = _x;  
    }
  
    function getX()external view returns (uint){
        return x;
    }

在合约A中如果想

调用第一个普通函数

function set(address _text, uint _x)external {
        B(_text).setX(_x);
        //引用方式:“合约名(变量一).函数名(变量二)”
        //变量名一要是“address”类型的,函数名则根据被调用的合约里的函数来
        //变量名二根据所调用的合约中的函数需不需要形参来确定
    } //调用普通函数。

调用第二种只读函数

 //调用只读函数,保持函数与被调用的函数的类型一致
    function get(address _text, uint _x)external view returns(uint) { 
        uint x =  B(_text).getX();  
        return x;
       /*写法二
       return B(_text).getX();
       //写法三,在第二个括号内定义返回值是x
        x = B(_text).getX();
       */
    }

标签:调用,函数,text,主币,uint,external,回退
From: https://www.cnblogs.com/hunshuideyunxue/p/18319580

相关文章

  • 函数传参,递归函数(汉诺塔,裴波那契数列),预处理
    递归函数 获得斐波那契数列的第n项的值斐波那契数列是指这样一个数列:1,1,2,3,5,8,13,21,34,55,89……这个数列从第3项开始,每一项都等于前两项之和。#include<stdio.h>intFbnq(intn){if(n==1){return1;}elseif(n==2){return1......
  • CertEnumCertificatesInStore 函数
     CertEnumCertificatesInStore函数用于枚举和读取Windows操作系统中的证书存储区中的证书。这些证书存储区是在操作系统中管理证书的地方。根据Windows操作系统的不同版本,证书存储区的位置可能会有所不同,但通常包括以下常见的存储区:当前用户的个人证书存储区:这个存......
  • C语言输入输出函数
    输入函数1.scanf函数:用于格式化输入。例如:scanf("%d",&num);用于读取一个整数并存储到变量num中。输出函数:   1.printf函数:    用于格式化输出。例如:printf("Thenumberis%d\n",num);会输出指定的字符串和变量num     的值。   ......
  • C++学习笔记(01)——使用VS Code进行C++函数分文件编写
    首先需要下载安装:C/C++ProjectGenerator扩展,就是下图这玩意:下载安装完成后,按ctrl+shift+p打开命令面板,输入createC++project,按回车后可以选择保存工程的文件夹创建好会后生成几个目录:.vscode:里面放一些配置文件之类的,如launch.json、setting.json、tasks.jsoninclude:存......
  • 易优CMS调用会员阅读权限的名称函数
    网站根目录extend/function.php文件内写入if(!function_exists('diy_getArcrank')){//显示文档的会员阅读权限名称functiondiy_getArcrank($arcrank=''){static$users_level_list=[];if(empty($users_level_list)){$users_lev......
  • 函数篇 学习笔记
    在使用时,需要注意函数的参数类型和返回值类型。小tips:对于有一定基础、自学能力较强且希望快速提升技能的学习者,可以通过直接实践法或逆向学习法(直接跳入实践环节,通过分析和理解具体的项目源码来学习新知识,而不是从理论或基础知识开始逐步构建)来提高自己的学习效率。目录......
  • 模板中的url_for函数
    模版中的url_for跟我们后台视图函数中的url_for使用起来基本是一模一样的。也是传递视图函数的名字,也可以传递参数。使用的时候,需要在url_for左右两边加上一个{{url_for('func')}} 1、动态超链接html页面使用如:<ahref="{{url_for('login',p1='abc',p2='ddd',name='mo......
  • React中函数组件中闭包陷阱如何产生,如何解决?
    在什么情况下会产生闭包陷阱?在React中,当使用useState和useEffect以及useCallback时,我们必须得注意闭包陷阱,避免出现一些意外的行为什么是闭包陷阱?闭包是指一个函数可以访问其词法作用域之外的变量。闭包主要发生的集中情况?在useState中的闭包陷阱在useEffect中的闭......
  • Python中enumerate()函数
    Python中enumerate()函数的作用是什么?enumerate()函数在Python中是一个非常有用的内置函数,它用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。使用enumerate()可以使你在循环中获取每个元素的同时,也能......
  • 函数重载
    1.函数重载区分const和非const参数voiddrivel(constchar*bites);//1voiddribble(char*bits);//2voiddribble(constchar*cbits);//3constcharp1[20]="hello,world,";charp2[20]="Howareyou?";dribble(p1);//调用函数2dribble(p2);//调用函数3drivel(......