【CryptZombies】レッスン3チャプター8:関数修飾子の続き(引数を持つ関数修飾子)
引数を持つ関数修飾子
// ユーザーの年齢を格納するマッピングだ:
mapping (uint => uint) public age;
// ユーザーの年齢が一定の年齢より高いことを要件とする関数修飾子だ:
modifier olderThan(uint _age, uint _userId) {
require (age[_userId] >= _age);
_;
}
// 車の運転は16歳以上だな(米国の場合だ。日本は18歳だな)。
// こういう場合に引数のある`olderThan`修飾子を使うのだ。こんな風に書けばいい:
function driveCar(uint _userId) public olderThan(16, _userId) {
// 関数のロジックだ
}
上記例より、olderThan修飾子が関数のように引数を取得できることが分かります。また、その引数はdriveCar関数から渡されています。
テストの実行
①ZombieHelperで、aboveLevelというmodiferを作成せよ。_level(uint)と_zombieId(uint)の2つの引数を取るようにせよ。
②その中で、zombies[_zombieId].levelが_level以上であることを確認せよ。
zombiefactory.solで作成したzombies配列の「_zombeId」について、該当するZombie構造体のlevelプロパティにアクセスし、それが_level以上であることを確認します。
requireステートメントを使用します。
③修飾子の最後に_;をつけて残りの関数を呼び出すことを忘れるなよ。
お疲れさまでした!
<参考>
CryptoZombies - イーサリアム上でゲームを開発する方法を学習。Powered by Loom Network