【CryptZombies】レッスン2チャプター4:Require
Require
requireはある条件を満たさない場合はエラーを投げて実行を止めることができるものです。
条件次第で関数を実行したいときにかなり使えます。
エクセルでいうところのif関数みたいなもの?
function sayHiToVitalik(string _name) public returns (string) {
// まず_nameが"Vitalik"と同じかどうか比較する。真でなければエラーを吐いて終了させる。
// (注:Solidityはネイティブで文字列比較ができない。そこで文字列の比較を
// するためにkeccak256 を使ってハッシュ同士を比較する方法を使うのだ。
require(keccak256(_name) == keccak256("Vitalik"));
// もし真ならば、関数を処理する:
return "Hi!";
}
sayHiToVitalik("Vitalik")でこの関数を呼び出せば、”Hi!"と帰ってきます。
それ以外で呼び出せばエラーを吐いて終了します。
テストの実行
①createRandomZombieの最初にrequireステートメントを記述せよ。この関数でownerZombieCount[msg.sender]が0であるかを確認し、そうでなければエラーを投げるように設定せよ。
上の例では文字列の比較をするためにkeccak256を使っていましたが、今回は数字の比較なので、keccak256を使用せず、単純にrequireを使用します。
※Solidityでは、どの用語を最初に書いても問題はありません。
しかしながら、システムのチェッカーがベーシックなものなので、1種類しか答えを判定することができません。
そこで、ownerZombieCount[msg.sender]を先に書くようにします。
お疲れさまでした!
<参考>
CryptoZombies - イーサリアム上でゲームを開発する方法を学習。Powered by Loom Network