🧟
【CryptoZombies】チャプター5:構造体の設計
Solidityの入門はCryptoZombiesがいいらしいので、挑戦の記録。
チャプター1から4は前の記事へ
チャプター5:構造体
チャプター1でゾンビを作った時、自分のゾンビはどんな部分を変えたか覚えているだろうか?
髪型、目の色、肌の色、服の種類、服の色。
これらの特徴をまとめる時に必要なのが構造体になる。
struct Zombie {
string 髪型;
string 目の色;
string 肌の色;
string 服の種類
string 服の色;
}
この時、髪型や目の色などの構造体を構成する要素はプロパティと呼ぶ。
練習問題
最初は復習。
すでに記載されているが、コードの1行目はコンパイラのバージョンの宣言だった。
pragma solidity ^0.4.19;
次に、記述する空のコントラクトを設置する.
今回のコントラクト名はZombieFactoryとする
pragma solidity ^0.4.09;
contract ZombieFactory {
}
設置したZombieFactoryの中に、dnaDigitsという変数を定義したい。
dnaDigitsは、負の値ではない数値であり、今回は16と指定したい。
pragma solidity ^0.4.19;
contract ZombieFactory {
// ここにdnaDigitsを定義するのだ
uint dnaDigits = 16;
}
10のdnaDigitsを自然数として、変数dnaModulusに格納する。
pragma solidity ^0.4.19;
contract ZombieFactory {
uint dnaDigits = 16;
// ここにdnaModulusを定義するのだ
uint dnaModulus = 10 ** dnaDigits;
}
ここから本題。
まずコントラクト内に、Zombiという構造体名の構造体を作成する。
pragma solidity ^0.4.19;
contract ZombieFactory {
uint dnaDigits = 16;
uint dnaModulus = 10 ** dnaDigits;
// ここにZombieというstructを定義するのだ
struct Zombie {
}
}
次に、Zombieという構造体に、文字列のnameと自然数のdnaというプロパティを設定したい。
pragma solidity ^0.4.19;
contract ZombieFactory {
uint dnaDigits = 16;
uint dnaModulus = 10 ** dnaDigits;
// ここにZombieというstructを定義するのだ
struct Zombie {
string name;
uint dna;
}
}
nameとdnaはZombieという構造体の中の要素なので、インデントに注意。
Discussion