Tomoyukiミュータブルとイミュータブルとは?Rubyプログラミングの注意点こんにちは。Tomoyuki(@tomoyuki65)です。「ミュータブル」と「イミュータブル」という言葉を聞いたことはありますか?Rubyでは、この二つを意識してプログラミングをしていないと、時に不具合を招いてしまう危険があるんです。この記事では、そんなRubyのミュータブルとイミュータブルについて解説します。最後にミュータブルとイミュータブルとは?ミュータブルとは「変更可能な」という意味で、反対にイミュータブルとは「変更できない」という意味になります。ミュータブルなオブジェクトは破壊的な変更が適用できるため、場合によっては本来変わってほしくない値まで一緒に変わってしまう恐れがあります。ミュータブルなオブジェクト例Rubyのミュータブルなオブジェクトの例としては文字列(Stringクラス)が挙げられます。例として以下のプログラムを実行してみて下さい。“JAPAN”]実行結果の通り、変数「s」に破壊的な変更を加えたのにも関わらず、配列の要素も変更されてしまいましたね。このように、ミュータブルなオブジェクトであることを意識していないと、予期せぬ不具合を招いてしまうので注意しましょう。上記の例の通り、配列の初期値を引数で指定した場合、配列の一つ目の要素だけでなく、全ての要素が”JAPAN”に変更されてしまいました。これは、配列の全要素が同じ文字列オブジェクトを参照しているために発生します。この問題を回避するためには、ブロックで初期値を渡します。例として以下のプログラムを実行してみて下さい。“japan”]実行結果の通り、一つ目の要素以外は変更されませんでした。ブロックで初期値を設定すると、同じ値でも異なるオブジェクトを設定することができます。同じオブジェクトを参照しているかはオブジェクトIDで確認することができます。引数で初期値を設定した場合のオブジェクトID要素1:47366969232680要素2:47366969232680要素3:47366969232680ブロックで初期値を設定した場合のオブジェクトID要素1:47366969232140要素2:47366969232120要素3:47366969232100イミュータブルのオブジェクトイミュータブルなオブジェクトでは、破壊的な変更が適用できません。基本的なデータ型では、以下の4種類があります。数値(IntegerクラスやFloatクラス)シンボル(Symbolクラス)true、false(TrueClassクラスとFalseClassクラス)nil(NilClassクラス)最後に今回はミュータブルとイミュータブルについて解説しました。文字列を扱う場合には注意が必要だと覚えておけば良いでしょう。最新の記事Tomoyuki元SE。30歳を目前に仕事や将来に悩み、Web業界へ転職を目指すも失敗。ブログでは大好きなパソコン情報をはじめ、様々な役立つ情報を発信中。次はプロゲーマーとしても活動するため、ゲーム練習と合わせて攻略記事を書いたり、YouTubeでも活動中。2020年2月5日RubyシェアはこちらからツイートシェアはてブLINEPocketfeedlyゲーミングPCならBTO最近はゲーミングPCを購入する人も増えましたが、「どう選べばいいの?」という人も多いですよね。初心者が失敗しない選び方はこちら資産運用始めなくて大丈夫ですか?日本ではお金の教育が一切無いので、資産運用している人はまだ少ないです。資産運用で結果を出すには膨大な時間が必要で、早く始めないと損なんです。ウェルスナビなら誰でも簡単に資産運用が始められるので、一度検討してみてはいかがでしょうか。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。ビットフライヤー(bitFlyer)の使い方を解説!登録や入出金から仮想通貨購入方法や手数料まとめZaif(ザイフ)のコイン積立を解説!仮想通貨の積立投資におすすめRECOMMENDこちらの記事も人気です。管理人:Tomoyukiこんにちは。Tomoyukiです。当ブログはプログラミングやパソコン関連情報をはじめ、自分の好きなことや、得意なことを仕事にして生きていくための方法に関する情報を発信していきます。