トラック
/
JavaScript
JavaScript
/
演習
/
レンズ使い
レンズ使い

レンズ使い

中級

はじめに

JavaScriptでは、レンズは関数型プログラミングの概念のひとつで、データへのアクセスと変更を、モジュール化された不変の方法で行えるようにしてくれます。レンズは要するに、オブジェクト内の特定のフィールドに注目する、純粋なゲッター関数とセッター関数の組み合わせ可能なペアです。

レンズを使うと、コードを簡潔にし、再利用しやすくし、よくあるプログラミングの間違いを避けることができます。たとえば、レンズは次のようなことに使えます。

  • データの具体的な構造を気にすることなく、入れ子になったデータ構造にアクセスして変更できます。
  • 元のオブジェクトを変更せずに、純粋な方法でデータを更新できます。
  • 複数のレンズを組み合わせて、より複雑なレンズを作り、さまざまな方法でデータにアクセスして変更できます。

説明

レンズを使って、入れ子のレコードを更新します(イミュータブルなデータを扱うプログラミング言語向け)。

入れ子になったイミュータブルなレコードのフィールドを更新するのは、なかなか面倒です。 こうした場合のコードは、構造が深くなるほど煩雑になります。 たとえば、Personの中にAddressがあり、そのAddressにStreetがあり、さらにそのStreetにNumberがあるとします。このNumberを更新するには、新しいNumberを持つStreetを新しく作り、次にその新しいStreetを持つAddressを新しく作り、最後にその新しいAddressを持つPersonを新しく作る必要があります。 もう混乱してきましたか?

この問題を解決する方法の1つが、レンズを使うことです。

レンズを使って、レコードにアクセスする関数をいくつか実装してみましょう。 テストスイートは、レンズをまったく使わないやり方にも対応しているので、別のアプローチを試すこともできます。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
JavaScript Exercism

レンズ使いを始める準備はできましたか?

Exercismに登録すれば、37個のコンセプト159個の演習、そして本物の人間によるメンタリングとともに、JavaScriptを学んでマスターできます。すべて無料です。