0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ミュータブル、イミュータブルとは

0
Last updated at Posted at 2024-11-24

Rubyに限らず、プログラミングの世界ではしばしばミュータブルとイミュータブルという言葉が登場します。ミュータブルは「変更可能な」という意味で、反対にイミュータブルは「変更できない、不変の」という意味です。

ミュータブルは破壊的な変更が適用される

ミュータブルなオブジェクトには破壊的な変更が適用できます。そのため、配列の要素が同じオブジェクトを参照していると、破壊的な変更によって本来変わってほしくない値まで一緒に変わってしまう恐れがあります。例えばRubyの文字列(Stringクラス)はミュータブルなので、先ほど説明したようにブロックを使わずに初期値に指定すると不具合が発生します。

イミュータブルなオブジェクトは破壊的な変更を適用できません。

イミュータブルなオブジェクトでは破壊的な変更が適用できません。そのため、ブロックを使わずに初期値を設定しても、文字列で発生したような不具合は発生しないことになります。

感想

ブロックで初期値を指定しないと思わぬ不具合を作ってしまうと説明しますと...

今更だがブロックとは何か?
ブロックの初期値を指定することがわからなかった。あとでまた理解しよう

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?