区块宠物间隔周期
上一节
下一节
现在,Pet 结构体中定义好了一个 readyTime 属性,让我们跳到 petmating.sol, 去实现一个间隔周期定时器。
按照以下步骤修改 mateAndMultiply:
1.配对行为会触发区块宠物的间隔周期
2.区块宠物在这段间隔周期结束前不能再和小猫配对
这将限制区块宠物无限制地和小猫配对或者整天不停地繁殖,未来区块链宠物的配对行为也依赖于这个间隔周期。
首先,我们要定义一些辅助函数,设置并检查区块宠物的 readyTime。
将结构体作为参数传入
由于结构体的存储指针可以以参数的方式传递给一个 private 或 internal 的函数,因此结构体可以在多个函数之间相互传递。
遵循这样的语法:
function _doStuff(Pet storage _pet) internal {
// do stuff with _pet
}这样我们可以将某区块宠物的引用直接传递给一个函数,而不用是通过参数传入区块宠物ID后,函数再依据ID去查找。
实战演习
1.先定义一个 _triggerGap 函数,它有一个类型为 Pet storage 的参数 _pet ,表示某个区块宠物的地址。这个函数可见性设置为 internal。
2.在函数中,把 _pet.readyTime 设置为 now + gapTime。
3.接下来,创建一个名为 _isReady 的函数。这个函数的参数也是有一个类型为 Pet storage 的参数 _pet。这个功能具有 internal 可见性和view可变性,并返回一个 bool 值。
4.函数计算返回(_pet.readyTime <= now),值为 true 或 false。这个功能的目的是判断下次允许配对的时间是否已经到了。


