1.38.0curry
یک تابع را به یک تابع curried تبدیل میکند که میتواند آرگومانهای خود را در چند فراخوانی دریافت کند.
curry(fn):(...args: Partial<TArgs>) => unknownپارامترها
fn(...args: TArgs) => TResultالزامیتابعی که باید curry شود. تعداد پارامترهای تعریفشده آن برای تعیین زمان کامل شدن آرگومانها استفاده میشود.
مقدار بازگشتی
(...args: Partial<TArgs>) => unknownیک تابع curried که آرگومانها را در چند فراخوانی جمع میکند و زمانی که تعداد کافی آرگومان دریافت شد، تابع اصلی را اجرا میکند.
مثالها
استفاده پایه
آرگومانها را در چند فراخوانی مختلف به تابع بدهید.
import { curry } from "@cyref/js";
const add = (a: number, b: number) => a + b;
const curriedAdd = curry(add);
const result = curriedAdd(5)(10);
console.log(result);
// 15چند آرگومان به صورت همزمان
آرگومانها را میتوان در یک فراخوانی نیز بهصورت همزمان ارسال کرد.
import { curry } from "@cyref/js";
const multiply = (a: number, b: number) => a * b;
const curriedMultiply = curry(multiply);
const result = curriedMultiply(4, 5);
console.log(result);
// 20سه آرگومان
تابعی با سه پارامتر میتواند آرگومانهای خود را در چند فراخوانی دریافت کند.
import { curry } from "@cyref/js";
const sum = (a: number, b: number, c: number) => a + b + c;
const curriedSum = curry(sum);
const result = curriedSum(1)(2)(3);
console.log(result);
// 6گروههای ترکیبی آرگومان
آرگومانها را میتوان در هر فراخوانی با تعداد متفاوتی ارسال کرد.
import { curry } from "@cyref/js";
const calculate = (
a: number,
b: number,
c: number,
) => a + b * c;
const curriedCalculate = curry(calculate);
const result = curriedCalculate(2, 3)(4);
console.log(result);
// 14تابع قابل استفاده مجدد با آرگومانهای جزئی
میتوان تابع برگشتی را ذخیره کرد و بعداً با آرگومانهای باقیمانده آن را کامل کرد.
import { curry } from "@cyref/js";
const multiply = (a: number, b: number) => a * b;
const curriedMultiply = curry(multiply);
const multiplyByTen = curriedMultiply(10);
const result = multiplyByTen(5);
console.log(result);
// 50جمعآوری آرگومانها
تابع آرگومانها را جمعآوری میکند تا تعداد آنها به تعداد پارامترهای تابع اصلی برسد.
import { curry } from "@cyref/js";
const formatName = (
firstName: string,
lastName: string,
title: string,
) => `${title} ${firstName} ${lastName}`;
const curriedFormatName = curry(formatName);
const withName = curriedFormatName("John", "Doe");
const result = withName("Dr.");
console.log(result);
// "Dr. John Doe"