LearnByLearn📖
573 subscribers
49 photos
9 videos
5 files
79 links
Download Telegram
⁉️ تا حالا عبارت currying به گوشتون خورده ؟



همونطور که میدونید توی جاواسکریپت توابع ما first class هستن

یعنی یک تابع رو به عنوان متغیر به تابع دیگه بفرستیم یا از تابع دیگه return اش کنیم

تکنیک currying به شما این امکان رو میده که توابع با آرگومان‌های متعدد رو به دنباله‌ای از توابع تبدیل کنی که این توابع هر کدام یک آرگومان را در یک زمان میگیرن.

یعنی قابلیت استفاده مجدد، ترکیب بندی و انعطاف پذیری کد را ارتقا می دهد.

کد زیر رو درنظر بگیر
وقتی بخوایم از تابع total استفاده کنیم باید هربار هی بهش بگیم واحد پول ما دلاره یا ریاله و مدام اینو توی صدا زدن تکرار کنیم که خب خیلی خوب نیست
function total(sign, amount) {
return `${sign}${amount}`;
}

total("Dolar", 200);
total("Rial", 200);


اما به لطف وجود first class function ها میتونیم از مفهوم currying استفاده کنیم
اینطوری دیگه فقط یکبار واحد پول رو تعیین میکنیم و هزار بار ازش استفاده میکنیم

function total(sign) {
return (amount) => {
return `${sign}${amount}`;
};
}

const totalDolar = total("Dolar");
const totalRial = total("Rial");

totalDolar(200);
totalDolar(200);


به یه روش دیگه هم میشه حرکت currying رو زد اونم استفاده از bind هستش :
function multipleByNumber(y, x) {
return y * x;
}
const multipleByTwo = multipleByNumber.bind(this, 2);

const multipleByThree = multipleByNumber.bind(this, 3);

multipleByTwo(200);
multipleByThree(200);


@LearnByLearn

#currying
#tips
#javascript
🔥3👍2
⁉️ سرورتون خنگه🤪 یا همه چیز یادش میمونه😎 ؟؟؟

فرض کن برای بار اول رفتی توی یک رستوران غذا 🍕سفارش بدی و به گارسون میگی من فلان غذارو میخوام
خب غذا و میزنی بدن و میری

ولی برای بار دوم دیگه نمیگی من چی میخورم !!! به گارسون میگی همون همیشگی، اینجا گارسون میدونه تو کی بودی و قبلا چی میخوردی و هربار دیگه هم بیایی بگی همون همیشگی اون یادشه
به این مفهوم که سرور ها یادشون میمونه و از وضعیتت اطلاع دارن در اصطلاح میگن stateful

مثلا احراز هویت از نوع session base یک احرازهویته stateful هست چون تو یک بار احراز هویت میشی و اطلاعاتت رو سرور توی دیتابیس ذخیره داره و نیاز نیس هربار بگی این منم این منم



حالا یه دستگاه عابربانک رو تصور کن
تو هربار که بری ازش پول بگیری باید عین هربارش بگی تو کی هستی یعنی دستگاه از وضعیت قبلی تو خبری نداره و نمیدونه تو همون شخصی هستی که قبلنم اومدی ازش پول بگیری
به این نوع میگن statless

دقیقا مثل احراز هویت از نوع jwt ، توی این احراز هویت تو وقتی برای اولین بار لاگین میکنی توی سایت، سرور در اصطلاح یه کلید بهت میده و تو هربار هر درخواستی که میزنی به سرور باید اون کلید هم همراهش بفرستی و بگی کی هستی چون برعکس session base چیزی از تو یادش نیس و باید بهش دیکته کنی



@LearnByLearn

#tips
#stateful
#stateless
🔥9👍1🤔1
داشتم کتاب Mastering Go رو میخوندم به یه جمله قشنگ و برخوردم که میگه:

Just because we can use channels, it does not mean that we should. If a simpler solution exists that allows goroutines to get executed and save the generated information, we should also consider that. The purpose of every developer should be to create a simple design, not to use all the features of a programming language.

میگه وقتی ما از چنل ها توی گولنگ استفاده میکنیم، بایدی در کار نیست که توعه دولوپر الزاما چون چنل یه فیچره حتما حتما ازش استفاده کنی بلکه اگه میدونی یه راه حل ساده تر وجود داره برو از اون استفاده کن
موظف نیستید از تمام امکانات اون زبون برنامه نویسی استفاده کنید و بگید yes من چقده خفنم بلکه خیلی جاها ممکنه کدتو با این کارا پیچیده تر کنی
حالا صرفا توی این مثال گولنگ و چنل ها بود منظور من کلی بود یعنی توی هر زبانی که داری باهاش کد میزنی
هدف توسعه دهنده باید یک طراحی ساده باشه نه صرفا استفاده از تمامی امکاناتی که توی زبون وجود داره

ادیت: لینک دانلود کتاب توی کامنت ها

@LearnByLearn
#tips
#tricks
👍7