lesson 1からlesson2
getterメソッドとは
ある特定のフィールドを呼び出すメソッドのこと
publicを使って誰でもPerson structとperson配列を呼び出すことができる
//pepopleという名前の配列をPerson構造体を使って作成。注意!配列を作っている。
Person[] people;
//publicで呼び出しができるようになった。
Person[] public people;
// 新しいPersonを作る:
Person satoshi = Person(172, "Satoshi");
// それを配列に格納する:データは配列に入るのである。
//people配列にsatoshiを追加。
people.push(satoshi);
//まとめて書くとすっきり。
people.push(Person(16, "Vitalik"));
パラメーターと変数の違い
パラメーターは引数を受けるために定義した変数のこと
変数は変えることができる定義された値
//_nameと_dnaがパラメーター のちほど具体的な値を当てはめるときの値のことを引数という。
function _createZombie(string _name, uint _dna) private {
zombies.push(Zombie(_name, _dna));
フロントエンドとバックエンドの違い
フロントエンド
HTMLなどユーザーに直接触れる言語のこと
バックエンドとは
サーバーサイドの言語のこと
python,phpなど
mappingとは
構造体、配列と同じくデータを格納したもの
配列は構造体を元に作られ、mappingはバリューをキーに格納している。
1つ目ではuintがバリューでaddressがキー
// 金融系のアプリの場合、ユーザーのアカウントの残高にuintを格納する:
//accountBlanceというmappingを作っている
mapping (address => uint) public accountBalance;
// もしくは、ユーザーIdを基にユーザー名を参照・格納するために使用するぞ:
mapping (uint => string) userIdToName;
mappingの更新方法
上のmappingはデータが何も入っていないので実際にデータを格納する方法を書く
関数を作って、faboriteNumber mappingに_myNumberパラメーターを格納する。
msg.sender
グローバル変数
その関数を呼び出したユーザーのaddressを参照する
mapping (address => uint) favoriteNumber;
function setMyNumber(uint _myNumber) public {
// ここでは`favoriteNumber` mappingを更新して、`msg.sender`下に`_myNumber`を格納するぞ。
favoriteNumber[msg.sender] = _myNumber;
// mappingにデータを格納するのは、こう書くのだ
}
function whatIsMyNumber() public view returns (uint) {
// 送信者のアドレスに格納されている値を受け取る
// もし送信者が`setMyNumber`を呼び出さなかった場合は`0`だ
return favoriteNumber[msg.sender];
}
lesson2 チャプター3
Zombie[] public zombies;
mapping (uint => address) public zombieToOwner;
mapping (address => uint) ownerZombieCount;
function _createZombie(string _name, uint _dna) private {
uint id = zombies.push(Zombie(_name, _dna)) - 1;
//ゾンビのオーナーidを関数の呼び出したユーザーに変更
zombieToOwner[id] = msg.sender;
//関数を呼び出したユーザーのゾンビ保有数が増えたので、オーナーの保有数も増やす
ownerZombieCount[msg.sender]++;
NewZombie(id, _name, _dna);
}
privateとinternalの違い
privateで定義された関数は継承されたコントラクトではエラーがでる。internalで定義しておけば、継承されたコントラクトでも使用できる。
Lesson 2 チャプター10
dappとは
Decentrailized application 分散型アプリケーションの略
ineterface
外部コンストラクトのデータを読み込む方法。
新しいコントラクタを作っているのではなく、インターフェイスを定義している。
getNum関数は関数定義をしているのではなく、外部のgetNum関数を参照している。
関数定義との違いはreturnステートメント後に{}で関数定義せず、;で終わっている。
contract NumberInterface {
function getNum(address _myAddress) public view returns (uint);
}
Lesson2 チャプター11
address ckAddress = 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d;
KittyInterface kittyContract = KittyInterface(ckAddress);
//kittyContractという名前のKittyInterfaceを作っている。インターフェイスを違う名前で作っている。
//kittyContractにラッキーナンバーで検索したアドレスを代入している。