【CryptZombies】レッスン1チャプター6:配列
配列とは?
なんだか数学の授業で聞いたことがあるようなないような…。
配列とはなんぞやについて、次のサイトで解説してあったので、ご紹介します。
配列(array)とは同じ型の複数の値を一つの名前(変数名)と添え字によって管理する仕組みです。
例えば7人の氏名の情報を配列で管理するとします。
この7人分のデータは配列において一列に並べられているとイメージしてください
この時一人ひとりの名前のデータを「要素」といい、並んでいる順番の番号を「添え字」といいます。
添え字は「0」から始まるので注意しましょう。
”氏名”という配列があるとして、次のようなイメージです。氏名[0],氏名[1],氏名[2],氏名[3],氏名[4],氏名[5],氏名[6],
というふうに一列に並んでおり、[0]に「田中」だったり、[3]に「佐藤」という値が格納されています。
<配列の使い方>
配列は
型名 配列名;
で宣言します。
例えば
int number[5];
といった具合です。内に書いている5は要素の数です。
2種類の配列
Solidityには2種類の配列が用意されています。固定長配列と可変長配列です。
2要素の固定長配列の場合
uint[2] fixedArray;
5要素の固定長配列の場合(5つの文字列を格納できる)
string[5] stringArray;
可変長配列(決まったサイズはないので、格納し続けることができる)
uint dynamicArray;
上記のサイトでは「添え字は「0」から始まるので注意しましょう。」と書いてありましたが、Solidityでは添え字は1から始まるのかな?
構造体の配列
構造体の配列も作ることができます。チャプター5の解説文ででてきたPerson構造体
を例にすると、次のように、「people」という名前のPerson構造体の配列を設定できます。
Person people;
Person[] people; // このように可変長配列で書ける。さらに追加し続けることもできるぞ。
チャプター3で、状態変数は永久にブロックチェーンに格納されると説明されていましたが、こういった構造体の可変長配列は、データベースのように使えるので、コントラクトの構造データを格納するときに便利です。
パブリックの配列
配列をpublicで宣言すれば、Solidityが自動的にgetterメソッドを作成してくれます。
Person[] public people;
こうすれば、getterメソッドが作成され、他のコントラクトもこの配列を読むことができます。(ただし、書き込めない)
publicはこうした性質を持っているので、コントラクトの公開データを格納するときに便利です。
テストの実行
①パブリックなZombie構造体の配列を作り、名前をzombiesとせよ。
チャプター5で作成したZombie構造体は、次のとおりです。
このZombie構造体の配列で、パブリックかつ名前がzombiesなので、回答は次のとおりになります。
お疲れ様でした!
<参考>
CryptoZombies - イーサリアム上でゲームを開発する方法を学習。Powered by Loom Network