初心者文系主婦がブロックチェーンを学ぶブログ

IT革命のビッグウェーブに乗り遅れた主婦が、ブロックチェーン革命の波にのるべく、ブロックチェーン技術を学ぶブログです。

【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つの引数を取るようにせよ。

f:id:nomadomama:20181210004244p:plain

 

②その中で、zombies[_zombieId].levelが_level以上であることを確認せよ。

zombiefactory.solで作成したzombies配列の「_zombeId」について、該当するZombie構造体のlevelプロパティにアクセスし、それが_level以上であることを確認します。

requireステートメントを使用します。

f:id:nomadomama:20181210004337p:plain

 

③修飾子の最後に_;をつけて残りの関数を呼び出すことを忘れるなよ。

f:id:nomadomama:20181210004806p:plain

 

お疲れさまでした!

 

 

<参考>

CryptoZombies - イーサリアム上でゲームを開発する方法を学習。Powered by Loom Network