問題一覧に戻る
初級基本構文
問題7: 定数と不変変数
Solidityのconstantとimmutable変数について学びます。constant変数はコンパイル時に初期化され、変更できません。immutable変数はデプロイ時(コンストラクタ内)に一度だけ設定でき、その後は読み取り専用になります。どちらもストレージスロットを使用しないため、通常の状態変数と比較して大幅なガスコスト削減になります。コンパイル時に分かる値にはconstant、デプロイ時に決まる値にはimmutableを使用します。
pragma solidity ^0.8.0;
contract Constants {
// 定数(コンパイル時に決定)
uint256 TOTAL_SUPPLY = 1000000;
// 不変変数(デプロイ時に決定)
address owner;
constructor() {
// デプロイ時にオーナーを設定
owner = msg.sender;
}
}