Solidity编程:事件、枚举、函数与数据类型详解
1. Solidity中的事件
Solidity支持事件,其工作原理与其他编程语言中的事件类似。事件由合约触发,感兴趣的人可以捕获这些事件并执行相应代码。事件主要用于通过以太坊虚拟机(EVM)的日志功能,将合约的当前状态通知给调用应用程序,还能告知应用程序合约的状态变化,使应用程序执行相关逻辑,避免应用程序不断轮询合约状态。
1.1 事件声明与调用
事件在合约的全局级别声明,并在函数内部调用。声明事件使用 event
关键字,后跟标识符和参数列表,以分号结尾,参数值可用于记录信息或执行条件逻辑。事件信息及其值作为交易的一部分存储在区块中。以下是事件声明和调用的示例代码:
// 事件声明
event ageRead(address, int);
function getAge (address _personIdentifier) onlyBy()
payable external returns (uint) {
human = MyStruct("Ritesh", 10, true,new uint[](3));
//使用结构体MyStruct
gender _gender = gender.male; //使用枚举
emit ageRead(personIdentifier, stateIntVariable); // 触发事件
}
2. Solidity中的枚举
枚举是一种自定义的数据类型,使用