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

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

【CryptZombies】レッスン2チャプター12:複数の返り値の処理

複数の返り値の処理

複数の値を返す例

function multipleReturns() internal returns(uint a, uint b, uint c) {
  return (1, 2, 3);
}

function processMultipleReturns() external {
 // 例として、まずa,b,cという名前のuint関数を宣言 uint a; uint b; uint c; // これが複数に割り当てる方法だ: (a, b, c) = multipleReturns(); } // そのうちの一つの値だけ欲しければ、こうすれば良い: function getLastReturnValue() external { uint c; // 他のフィールドは空欄でも構わないぞ: (,,c) = multipleReturns(); }

 

テストの実行

①feedOnKittyという名前の関数を作成せよ。そこに_zombieIdと_kittyIdというどちらもuintのパラメータを設定せよ。また関数はpublicを使用せよ。

f:id:nomadomama:20181203225447p:plain

 

②その関数の中で、まず最初にkittyDnaというuintの関数を宣言せよ。

f:id:nomadomama:20181203225619p:plain

 

③次に、_kittyIdで、kittyContract.getKitty関数を呼び出しkittyDnaにgenesを格納せよ。一つ注意がある。getKittyを使うと、大量の変数が返ることになる(正確には10個だ。)欲しいのは最後のgenesだけだ。カンマの数に気を付けるのだぞ!

まず、赤線から見ていきます。

チャプター11で初期化したkittyContractという名前のKittyInterface。

このkittyContractプロパティにアクセスしてgetKitty関数を呼び出します。

getKitty関数の引数は_id(uint)なので、_kittyIdを渡します。

f:id:nomadomama:20181203232103p:plain

 

次に青線を見ていきます。

getKitty関数の戻り値は10個ありますが、欲しいのは10個目のgenesだけなので、次のようになります。

f:id:nomadomama:20181203232505p:plain

 

④最後に、feedAndMultiplyを呼び出し、_zombieIdとkittyDnaの両方を渡すのだ。

 feedAndMultiply関数の引数は_zombieId(uint)と_targetDna(uint)なので、それぞれ_zombieIdとkittyDnaを渡します。

f:id:nomadomama:20181203232833p:plain

 

お疲れさまでした!

 

 

<参考>

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