区块链开发学习第六章:Solidity基本语法(持续更新)
一、事件(event与emit)
Solidity中,要定义事件,可以使用event
关键字(在用法上类似于function
关键字)。然后可以在函数中使用emit
关键字触发事件。
按照惯例,事件名称以大写字母开头,以区别于函数。
之前是没有emit的,是用大写字母开头用以标识触发事件,但是经常容易与方法混淆,之前著名的以太坊硬分叉以太经典的DAO事件就是由这个导致的,所以就有了emit
// 声明一个事件 event Deposit(address indexed _from, bytes32 indexed _id, uint _value); // 触发事件 emit Deposit(msg.sender, _id, msg.value);
参考:https://www.qikegu.com/docs/5004
二、引用类型(memory与storage)
- memory(值类型)
- storage(引用类型)
storage | memory | |
---|---|---|
储存的变量 | 函数外部声明的变量,即状态变量 | 函数内部声明的变量,即局部变量 |
存储的位置 | 区块链上,永久存在 | 内存中,运行完之后销毁 |
运行的位置 | 区块链网络上 | 单个节点 |
传递属性 | 指针传递 | 值传递 |
一般来说就是:在函数内部定义的,需要添加memory关键字,比如这样:
如果有学习计划的童鞋,可以加我QQ一起交流: