在 JavaScript 中,透鏡是函式程式設計的概念,讓你能以模組化且不可變的方式存取和修改資料。它們本質上是由純粹的取值函式和設值函式構成的可組合配對,聚焦在物件內的某個特定欄位。
透鏡可以用來簡化程式碼、提高重用性,並避免常見的程式設計錯誤。例如,透鏡可以用來:
使用 lens 來更新巢狀記錄(僅限於具有不可變資料的語言)。
更新巢狀且不可變的記錄裡的欄位,實在有點煩人。 這類情況的程式碼有多繁瑣,取決於結構有多深。 假設你有一個 Person,裡面包含一個 Address,Address 有一個 Street,Street 又有一個 Number;那麼要更新 Number,就得先用新的 Number 建立一個新的 Street,再用新的 Street 建立新的 Address,最後用新的 Address 建立新的 Person。 已經搞混了嗎?
這個問題的其中一個解法,就是使用 lenses。
用 lenses 實作幾個存取記錄的函式。 測試套件也允許你完全避開 lenses,讓你可以試試不同的做法。