科技颠覆者 发表于 2024-7-17 22:54:31

Solidity事件,等待事件

先定义一个事件
event Log(string message,uint vall);然后规定一个函数来调用它
function example()external {
      emit Log("foo",123);//触发事件: "emit 事件名("变量名",数值);"
      
    }此时部署后点击合约中名为”example“的按钮时,则会将函数括号内的数值赋给事件内的变量。
如果想通过输入数值的方式来给这个事件中的变量赋值则
event Message(address indexed _from,address indexed _to,string message); //定义一个索引,最多三个有索引的

    function load(address _to,string calldata message) external {

      emit Message(msg.sender, _to, message);
}<br>等待事件
先定义一个结构体与数组
struct ToDo{
      string text;
      bool completed;
    }

    ToDo[] public todos;//新增数组然后通过函数的形式来处理所定义的变量
function create(string calldata _text)external {//输入字符串
       todos.push(ToDo({
      text : _text,   //将输入值赋给状态值
      completed : false
      }));
    }定义完数据,处理完后就要将处理好的结果存入内存中
function updateText(uint _index,string calldata _text) external {//输入数字跟字符串
      todos.text = _text;
      ToDo storage todo = todos;//新增变量“todo”
      todo.text = _text;
    }//将事情装入内存一次存入的数据越多则消耗的gas值越多,同时也可以将事件存入储存中去
function get(uint _index) external view returns (string memory,bool){ //输入数字
      //装到内存中的写法,gas消耗多,拷贝两次
      ToDo memory todo = todos;
      return (todo.text,todo.completed);
      //装到存储中:将“memory”改为“storage”,拷贝一次
    }存入数据后要反转结构体中的布尔值,让它表现已经存入了数据这一信息
function toggleCompleted(uint _index) external {//输入数字
      todos.completed = !todos.completed;
    } //反转完成变量的数据 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Solidity事件,等待事件