******事件代码*******
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
contract testEven {
//学习使用事件
//定义一个事件
event log(uint id, uint age, string name, address who);
//特殊事件 只能使用三个参数,多了报错 带有indexed的索引可以在链外三方网站查询此用户的事件
event indx( address indexed who,string message,uint codeid);
//触发事件
function chufa() external {
//触发并记录值,里面填写的就是要记录的
emit log(1, 21, "name", msg.sender);
emit indx (msg.sender,"hello",2);
}
//模拟一个转账请求事件记录
event message(address indexed from, address indexed to, uint qian);
function zhuan(address from,address to, uint qian) external {
emit message(from, to, qian);
}
}
*******数据复习********
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
//复习三个变量类型
contract data {
//定义一个结构体
struct class{
uint age;
string name;
}
//定义一个映射
mapping (address\=>class) public newClass;
//三种数据类型的操作
function exp(uint[] calldata x, string calldata y) public {
//映射的地址 = 结构体的数据
newClass[msg.sender] \= class(20,"xiaoming");
//往结构体里面修改数据 要取一个新名字,用新名字点对象才能修改
// 结构体 新名字变量 = 映射【谁】
class storage xinmingzi \= newClass[msg.sender];
//名字点对象 = 值
xinmingzi.age \= 19;
class memory mad2 \= newClass[msg.sender];
mad2.name \= "xioahong";
test(x,y);
//非存储类型,局部变量的数组只能是定长数组
uint[] memory arr \= new uint[](3);
arr[0] \= 123;
}
function test(uint[] calldata x,string calldata y) public {
}
}