qidao123.com技术社区-IT企服评测·应用市场

 找回密码
 立即注册

Solidity事件,等待事件

[复制链接]
发表于 2024-7-17 22:54:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
先定义一个事件
  1. event Log(string message,uint vall);
复制代码
然后规定一个函数来调用它
  1. function example()external {
  2.         emit Log("foo",123);  //触发事件: "emit 事件名("变量名",数值);"
  3.         
  4.     }
复制代码
此时部署后点击合约中名为”example“的按钮时,则会将函数括号内的数值赋给事件内的变量。
如果想通过输入数值的方式来给这个事件中的变量赋值则
  1. event Message(address indexed _from,address indexed _to,string message); //定义一个索引,最多三个有索引的
  2.     function load(address _to,string calldata message) external {
  3.         emit Message(msg.sender, _to, message);
  4.   }<br>
复制代码
等待事件
先定义一个结构体与数组
  1. struct ToDo{
  2.         string text;
  3.         bool completed;
  4.     }
  5.     ToDo[] public todos;  //新增数组
复制代码
然后通过函数的形式来处理所定义的变量
  1. function create(string calldata _text)external {  //输入字符串
  2.        todos.push(ToDo({
  3.         text : _text,     //将输入值赋给状态值
  4.         completed : false
  5.         }));
  6.     }
复制代码
定义完数据,处理完后就要将处理好的结果存入内存中
  1. function updateText(uint _index,string calldata _text) external {  //输入数字跟字符串
  2.         todos[_index].text = _text;
  3.         ToDo storage todo = todos[_index];  //新增变量“todo”
  4.         todo.text = _text;
  5.     }  //将事情装入内存一次
复制代码
存入的数据越多则消耗的gas值越多,同时也可以将事件存入储存中去
  1. function get(uint _index) external view returns (string memory,bool){ //输入数字
  2.         //装到内存中的写法,gas消耗多,拷贝两次
  3.         ToDo memory todo = todos[_index];
  4.         return (todo.text,todo.completed);
  5.         //装到存储中:将“memory”改为“storage”,拷贝一次
  6.     }
复制代码
存入数据后要反转结构体中的布尔值,让它表现已经存入了数据这一信息
  1. function toggleCompleted(uint _index) external {  //输入数字
  2.         todos[_index].completed = !todos[_index].completed;
  3.     } //反转完成变量的数据
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199|浙ICP备20004199号 )|网站地图

GMT+8, 2025-8-11 12:11 , Processed in 0.079458 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表