メインコンテンツまでスキップ

Constant and Immutable

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract Constant {
// constantな変数は大文字で書くのが原則
address public constant MY_ADDRESS = 0x777788889999AaAAbBbbCcccddDdeeeEfFFfCcCc;
uint public constant MY_UINT = 123;
}

tip

constant は宣言するタイミングで初期値を与えないといけない



// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract Immutable {
// immutable変数は大文字で書くのが原則
address public immutable MY_ADDRESS;
uint public immutable MY_UINT;

constructor(uint _myUint) {
// immutableだから値を付与できる
MY_ADDRESS = msg.sender;
MY_UINT = _myUint;
}
}
  • immutable は constant と同様で書き換えができない変数だが、constructor によって初期化が可能になったもの
tip
  • constructor は contract が作成されるときに一度だけ呼ばれる関数
  • python や javascript の場合に constructor が class にあるのはご存知だろう。Solidity では contract は class みたいに理解してもよいかもしれない

Remixで試す