Rubyのミュータブル/イミュータブルについて

ミュータブル/イミュータブルって何?

ミュータブル…変更可能な

イミュータブル…変更できない、不変の

 

このような意味になります。

イミュータブルなオブジェクトとは?

  • 数値(integerクラス, Floatクラス)
  • シンボル(Symbolクラス)
  • true/false
  • nil

上記4種類が該当します。

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

破壊的変更とは?

upcase! などの!が付いているものを破壊的変更となります。

例は以下のとおりです。

food = 'apple'
puts food # => apple
food.upcase!
puts food # => APPLE

イミュータブルなオブジェクトに対しては上記のような変更が不可となります。

このへんは頭に入れておいたほうがよさそうですね。

 

何か参考になれば幸いです(*^^*)