Lesson 2 Chapter7 storage とmemory
関数外で宣言された変数はStorageとして扱われる。
関数内で宣言された変数はmemory(拡張可能なバイト配列)として扱われて関数の呼び出しが終われば消える。
ただし、関数の中で参照型(arraysやStruct)の変数を定義した場合、デフォルトではstorageとみなされる。
関数でstructs や arraysを使用するときにstorage か memoryを明示的に使用することができる。
storage memory 例
struct Sandwich {
string name;
string status;
}
Sandwich[] sandwiches;
function eatSandwich(uint _index) public {
Sandwich storage mySandwich = sandwiches[_index];
//この場合`mySandwich`がstorage内の`sandwiches[_index]`を示すポインタになる。
mySandwich.status = "Eaten!";
// `sandwiches[_index]`をブロックチェーン上でも永久に変更することになる。
// コピーしたいだけなら、`memory`の方が便利だ:
Sandwich memory anotherSandwich = sandwiches[_index + 1];
// この場合`anotherSandwich`は memory内のデータをコピーすることになる。
anotherSandwich.status = "Eaten!";
// 一時的な変数を変更するだけで、`sandwiches[_index + 1]`にはなんの影響もない。
次のようにすることも可能だ:
sandwiches[_index + 1] = anotherSandwich;
// ブロックチェーンのstorageに変更したい場合。
}
}
prev
-
クリプトゾンビ Lesson 2 Chapter6 import
Lesson 2 Chapter6 import importは、contractを異なるファイルに分割した場合,他のファイルの中身をそのまま読み込む機能をもつ。 補足 import "filenam ...
next
-
クリプトゾンビ Lesson 2 Chapter8 ゾンビ DNA
Lesson 2 Chapter8 ゾンビ DNA 2つのuint16桁ゾンビDNAを掛け合わせて新しい一つのDNAを生成する。 生成する方法は、2つのDNAの平均値としている。 掛け合わせるDNAを ...