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

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

【CryptZombies】レッスン1チャプター6:配列

配列とは?

なんだか数学の授業で聞いたことがあるようなないような…。

配列とはなんぞやについて、次のサイトで解説してあったので、ご紹介します。 

配列(array)とは同じ型の複数の値を一つの名前(変数名)添え字によって管理する仕組みです。

例えば7人の氏名の情報を配列で管理するとします。

この7人分のデータは配列において一列に並べられているとイメージしてください

この時一人ひとりの名前のデータを「要素」といい、並んでいる順番の番号を「添え字」といいます。

添え字は「0」から始まるので注意しましょう。
”氏名”という配列があるとして、次のようなイメージです。

氏名[0],氏名[1],氏名[2],氏名[3],氏名[4],氏名[5],氏名[6],
というふうに一列に並んでおり、[0]に「田中」だったり、[3]に「佐藤」という値が格納されています。

 

<配列の使い方>

配列は

型名 配列名

で宣言します。

例えば

int number[5];

といった具合です。内に書いている5は要素の数です。

プログラミングの「配列」とはどんなもの?【26回】 | プログラミング講座・研修ならエパノ プログラミングスクール【東京・新宿】 | プログラミング講座・研修ならエパノ プログラミングスクール【東京・新宿】

 

 2種類の配列

Solidityには2種類の配列が用意されています。固定長配列可変長配列です。

2要素の固定長配列の場合

uint[2] fixedArray;

 

5要素の固定長配列の場合(5つの文字列を格納できる)

string[5] stringArray;

 

可変長配列(決まったサイズはないので、格納し続けることができる)

uint dynamicArray;

 

上記のサイトでは「添え字は「0」から始まるので注意しましょう。」と書いてありましたが、Solidityでは添え字は1から始まるのかな?

 

構造体の配列

構造体の配列も作ることができます。チャプター5の解説文ででてきたPerson構造体

f:id:nomadomama:20181111162412p:plain

を例にすると、次のように、「people」という名前のPerson構造体の配列を設定できます。

Person people;

Person[] people; // このように可変長配列で書ける。さらに追加し続けることもできるぞ。

 

チャプター3で、状態変数は永久にブロックチェーンに格納されると説明されていましたが、こういった構造体の可変長配列は、データベースのように使えるので、コントラクトの構造データを格納するときに便利です。

 

パブリックの配列

配列をpublicで宣言すれば、Solidityが自動的にgetterメソッドを作成してくれます。

Person[] public people;

こうすれば、getterメソッドが作成され、他のコントラクトもこの配列を読むことができます。(ただし、書き込めない)

publicはこうした性質を持っているので、コントラクトの公開データを格納するときに便利です。

 

テストの実行

①パブリックなZombie構造体の配列を作り、名前をzombiesとせよ。

チャプター5で作成したZombie構造体は、次のとおりです。

f:id:nomadomama:20181111163836p:plain

このZombie構造体の配列で、パブリックかつ名前がzombiesなので、回答は次のとおりになります。

f:id:nomadomama:20181111163815p:plain

 

お疲れ様でした!

 

<参考>

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