書いてイミュータブルなオブジェクトを実装しようイミュータブルという言葉を知っていますか?プログラミングにおける重要なキーワードの1つらしいのですが、私は知りませんでした。例にとって考察しようと思います。イミュータブルとはイミュータブル(immutable)とは、日本語で「不変」という意味の言葉です。イミュータブルなオブジェクトと言ったら、状態が変わらないオブジェクトのことを指します。イミュータブルなオブジェクトは状態が変えられないため、変数のオブジェクトを更新する場合は、オブジェクトを作り直さなければいけません。イミュータブルなオブジェクトにするのかなぜわざわざオブジェクトを作り直すのでしょうか。イミュータブルなオブジェクトを使用する利点は、いくつか考えられます。以前の状態を簡単に再現できるイミュータブルなオブジェクトは、状態が変化しないことが保証されているため、そのオブジェクトを保持しておくだけでいつでも元の状態を再現することができます。データの更新を簡単に検出できるイミュータブルなオブジェクトは、前と同じオブジェクトを参照している限り、状態も変化していないことがわかります。そのため、オブジェクトが持っているすべての状態を1つずつ取り出して比較する必要がありません。構築することで、効率的な再レンダーが可能になります。※詳しくは、Reactのガイドで説明されています。おいて、文字列や数値、真偽値等のデータは絶対的にイミュータブルです。そのため、これらのデータを扱う場合はイミュータブルを意識する必要はありません。※こちらの資料で詳しく説明されています。一方で、オブジェクトや配列は中の状態が変えられるため、基本的にイミュータブルなデータではありません。3]オブジェクトや配列をイミュータブルなデータとして扱いたい場合は、少し工夫が必要です。基となるオブジェクトの状態は変えずに、新しい状態を持った別のオブジェクトを作成し、古いデータと置き換えて使用します。使えるようになった新しいメソッドです。(1段階の深さのコピー)した新しいオブジェクトを返します。メソッドを使うことで、元の配列を変更せずに要素を結合したり、元の配列を変更せずに要素を切り取ったり、非破壊的な配列操作が可能になります。等のメソッドは元の配列を直接変更してしまうため、イミュータブルな配列には使用できません。他に、オブジェクトのプロパティや配列の要素に値を直接代入するようなコードも、イミュータブルなデータ更新では使うことができません。データの変化を伴うメソッドのことを破壊的メソッド、データの変化を伴わないメソッドを非破壊的メソッドといいます。イミュータブルなオブジェクト操作では非破壊的メソッドを使いましょう。上記のメソッドは、コピー元のプロパティがオブジェクトを参照している場合、参照の値のみをコピーします。オブジェクトを別の変数に代入する際も、参照の値をそのまま代入して、同じオブジェクトを参照するようにしています。trueこのように同じオブジェクトを参照することで、オブジェクトの状態が等しいかどうかを簡単に調べることができます。オブジェクトを1から作り直すわけではないので、メモリが無駄に使用されることもありません。スプレッド構文でより簡潔にオブジェクトや配列をイミュータブルなデータとして扱うコードは、スプレッド構文を使ってより簡潔に書くことができます。使えるようになりました。まとめオブジェクトの状態は変えず、新しく作り直すようにすることで、イミュータブルなオブジェクトを実現することができました。使えるようになった新しいメソッドやスプレッド構文を活用して、イミュータブルなオブジェクトを実装しましょう。コメントをキャンセルメールアドレスが公開されることはありません。(1)四次元のおともだちホームブログお問い合わせこのサイトについて「四次元のおともだち」は、二次元ではないけどマニアックな情報を発信するサイトです。