فرد لنز

فرد لنز

متوسط

مقدمه

در JavaScript، «لنز» یک مفهوم در برنامه‌نویسی تابعی است که به شما امکان می‌دهد به داده‌ها به شکلی ماژولار و تغییرناپذیر دسترسی داشته باشید و آن‌ها را تغییر دهید. لنزها در واقع جفت‌هایی ترکیب‌پذیر از توابع خالص گیرنده و تنظیم‌کننده هستند که روی یک فیلد مشخص درون یک شیء تمرکز می‌کنند.

از لنزها می‌توان برای ساده‌سازی کد، افزایش قابلیت استفاده‌ی مجدد از آن و پرهیز از خطاهای رایج برنامه‌نویسی استفاده کرد. برای مثال، می‌توان از لنزها برای موارد زیر استفاده کرد:

  • دسترسی به ساختارهای داده‌ی تودرتو و تغییر آن‌ها، بدون این که نگران ساختار مشخص داده‌ها باشید.
  • به‌روزرسانی داده‌ها به شکلی خالص، بدون تغییر شیء اصلی.
  • ترکیب چند لنز با یکدیگر برای ساختن لنزهای پیچیده‌تری که می‌توانند به روش‌های گوناگون به داده‌ها دسترسی پیدا کنند و آن‌ها را تغییر دهند.

دستورالعمل‌ها

برای به‌روزرسانی رکوردهای تودرتو از lensها استفاده کنید (مخصوص زبان‌هایی که داده‌های تغییرناپذیر دارند).

به‌روزرسانی فیلدهای رکوردهای تودرتوی تغییرناپذیر تا حدی آزاردهنده است. کد چنین مواردی به همان اندازه که ساختار عمیق است، دست‌وپاگیر می‌شود. فرض کنید یک Person دارید که شامل یک Address است، آن هم یک Street دارد که یک Number دارد؛ به‌روزرسانی Number نیازمند ساختن یک Street تازه با Number تازه است، بعد یک Address تازه با Street تازه و در نهایت یک Person تازه با Address تازه. گیج شده‌اید؟

یکی از راه‌حل‌های این مسئله استفاده از lenses است.

چند تابع برای دسترسی به رکوردها را با استفاده از lensها پیاده‌سازی کنید. مجموعه‌ی testها هم به شما این امکان را می‌دهد که اصلاً از lensها استفاده نکنید و با روش‌های متفاوت آزمایش کنید.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
JavaScript Exercism

آماده‌اید فرد لنز را شروع کنید؟

در Exercism ثبت‌نام کنید تا JavaScript را همراه با 37 مفهوم159 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.