【CryptZombies】レッスン1チャプター13:イベント
イベント
eventsは、ブロックチェーンで何かが生じたときに、コントラクトがアプリのフロントエンドに伝えることができるものです。
しかも特定のイベントを”listening"状態にして、何かあったときにアクションを起こすこともできます。
// イベントの宣言
event IntegersAdded(uint x, uint y, uint result);
function add(uint _x, uint _y) public {
uint result = _x + _y;
// 関数が呼ばれたことをアプリに伝えるためにイベントを発生させる:
IntegersAdded(_x, _y, result);
return result;
}
テストの実行
①NewZombieという名前のeventを宣言せよ。zombieId(uint)、name(stirng)、dna(uint)の値を渡すのだ。
②_createZombie関数を編集し、zombies配列に新しいゾンビを追加したらNewZombieイベントを発生させよ。
NewZombieイベントの引数はzombieId、name、dnaですが、zombies配列に新しいゾンビを追加した場合、_nameと_dnaが渡されるので、次のようになります。
ちなみに、NewZombieイベントの引数のひとつであるzombieIdが、なぜか本問の答えではidになっていました。
なんでこうなるのかにゃ?
分かる人いたら教えてください。
③ゾンビのidが必要だ。array.push()は新しい長さのuint配列を返し、配列の最初のインデックスは0であるから、array.push() -1が追加したゾンビのインデックスだ。そこで、zombies.push() -1結果をidという名前のuintに格納し、次の行で作成するNewZombieイベントで使用できるようにせよ。
本問の前半は、配列(array)のインデックスについての説明です。
まず、赤線から見ていきます。
array.push() -1が追加したゾンビのインデックスになるので、次のようになります。
次に青線を見ます。
上の結果をidという名前のuintに格納します。
お疲れさまでした!
<参考>
CryptoZombies - イーサリアム上でゲームを開発する方法を学習。Powered by Loom Network