コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

「 イミュータブルな変数」という言葉をざっくりまとめる

そういえばなんとなく雰囲気で使っているところがあるので

immutableとは

英単語としてのimmutableは「不変の」というような意味。

Immutable Object

オブジェクト指向の文脈で Immutable Object というフレーズがある。これはオブジェクト指向におけるインスタンスを生成したタイミング以降は状態が変化しない(不変)のオブジェクトのことを指している。

具体的には各オブジェクトがインスタンス変数として持つ値は、インスタンスの生成後は変更や操作できないようになっているような構造のオブジェクトのことを指す。とても大雑把に表現するとsetterなどのインスタンスの内部の情報を書き換えるような変数を持たず、それらの値はインスタンス生成時に設定されて変更が効かないオブジェクトなどがこれにあたる。

イミュータブルなオブジェクトは内部の状態が変化しないので、変化したことを考慮した実装が減るという利点がある。

イミュータブルな変数

Immutable Objectの考えの延長線上に、一度定義したら内容の変えない変数をイミュータブルな変数という表現をすることがある。

多くは一度変数を定義したら、定義時点の情報から書き換えない(再代入や操作を行わない)変数のことを指す。プログラミング言語によってはイミュータブルな変数として定義できるようになっている(Swiftのletなどがこれにあたる)。もちろんプログラミング言語などでイミュータブルな状態を維持する機構がない場合もある。

参考/関連リンク