事件
上一节
下一节
事件是智能合约发出的“信号”。智能合约的前端UI,例如,DApps、web.js,或者任何与Ethereum JSON-RPC API连接的东西,都可以侦听这些事件。事件可以被索引,以便以后可以搜索事件记录。
// 声明一个事件
event IntegersAdded(uint x, uint y, uint result);
function add(uint _x, uint _y) public {
uint result = _x + _y;
//触发事件,通知app
IntegersAdded(_x, _y, result);
return result;
}实战演习
当每次宠物被孵化出来的时候,我们的前端需要能监听到这个事件,并将它显示出来。
定义一个 事件 叫做
NewPet。 它有3个参数:petId (uint),name (string), 和dna (uint)。修改
_createPet函数使得当新宠物孵化出来并加入pets数组后,生成事件NewPet。定义一个 uint 类型的变量名为 id,然后下方代码赋值给它,并在最后减一;随后在第二行编写代码触发NewPet事件(注:0.4 版本触发事件无需使用emit关键字),别忘了传入对应的三个参数。需要定义宠物的索引。在Solidity 0.4.x 和 0.5.x 版本中,
array.push()返回动态数组的新长度, 返回值类型是uint。数组的第一个元素的索引是 0, 所以array.push() - 1是我们新加入的宠物的索引值(id)。 我们需要修改那行代码获得宠物索引,将pets.push() - 1作为索引值存在变量id中,数据类型是uint。在下一行中你可以把它用到NewPet事件中。


