Constant
コントラクトの定数について学習します
定数はコントラクトデプロイ後は一切変更できない値です
変数はストレージ領域に保存されますが、定数はコンパイルされたバイトコードに直接埋め込まれます
constructor
コンストラクタとは、コントラクトのデプロイ時にのみ実行される関数
ストレージに記録する変数はデプロイ時は型のデフォルト値が格納されるが、それにたいして特定の値を代入するために用いられる
コンストラクタを省略することも可能、その場合は何もセットアップをしないということになる
継承する場合は親のコンストラクタを呼ぶ必要がある
contract ConstructorSample {
uint a;
constructor(uint x) {
a = x;
}
}
contract ConstructorChild is ConstructorSample {
uint b;
constructor(uint x) Constructor(x) {
b = x;
}
}
constant
constantは代入不可能な定数
変数宣言時に値を代入しておく必要がある
contract Constant {
uint constant a = 1;
// Impossible to substitute from constructor
constructor() {
a = 2;
}
// Impossible to substitute from function
function setConstant() {
a = 3;
}
}
immutable
immutableの役割はconstantとほぼ同じだが、constructorでのみ代入可能になる
contract Immutable {
uint immutable a;
// Possible to substitute from constructor
constructor() {
a = 2;
}
// Impossible to substitute from function
function setImmutable() {
a = 3;
}
}