Solidity事件,等待事件
  U6UHQBKl2wpG 2024年08月07日 42 0

先定义一个事件

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);
  }

等待事件

先定义一个结构体与数组

struct ToDo{
        string text;
        bool completed;
    }

    ToDo[] public todos;  //新增数组

然后通过函数的形式来处理所定义的变量

function create(string calldata _text)external {  //输入字符串
       todos.push(ToDo({
        text : _text,     //将输入值赋给状态值
        completed : false
        }));
    }

定义完数据,处理完后就要将处理好的结果存入内存中

 function get(uint _index) external view returns (string memory,bool){ //输入数字
        //装到内存中的写法,gas消耗多,拷贝两次
        ToDo memory todo = todos[_index];
        return (todo.text,todo.completed);
       //将事情装入内存一次
    }

 

存入的数据越多则消耗的gas值越多,同时也可以将事件存入储存中去

//装到存储中:将“memory”改为“storage”,拷贝一次
    function updateText(uint _index,string calldata _text) external {  //输入数字跟字符串
        ToDo storage todo = todos[_index];  //新增变量“todo”
        todo.text = _text;
    } 

 其实,存入内存跟存入储存中只是将“memory”改为“storage”,其他都可以不改

存入数据后要反转结构体中的布尔值,让它显示已经存入了数据这一信息

function toggleCompleted(uint _index) external {  //输入数字
        todos[_index].completed = !todos[_index].completed;
    } //反转完成变量的数据

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年08月07日 0

暂无评论

推荐阅读
  U6UHQBKl2wpG   2024年08月07日   40   0   0 区块链
  U6UHQBKl2wpG   2024年08月07日   42   0   0 区块链
  SLI5qvYxXXnE   2024年08月07日   43   0   0 区块链
  SLI5qvYxXXnE   2024年08月07日   41   0   0 区块链
  SLI5qvYxXXnE   2024年08月07日   50   0   0 区块链
  SLI5qvYxXXnE   2024年08月07日   45   0   0 区块链
  dve6WtqypWN1   2024年08月06日   41   0   0 区块链
U6UHQBKl2wpG