咖喱
简单的咖喱功能
一个简单的帮助者来包裹一个函数并逐渐接受(即部分应用) 参数.
这个软件包在技术上是一种辅助器部分应用,但 curry 有点
比较容易记住和更好的软件包函数名称 partiallyApply。 。 。 .
安装
使用 雅伦数字 :
$ yarn add @blakek/curry
...或使用 无数字 :
$ npm i --save @blakek/curry
使用量
import { curry, curryRight } from '@blakek/curry';
// Simple curry usage
const multiply = (a, b) => a * b;
const timesTwo = curry(multiply)(2);
timesTwo(5); //» 10
// Specify number of arguments
const sum = (...args) => args.reduce((a, b) => a + b, 0);
const topFiveTotal = curry(sum, 5);
topFiveTotal(1, 5, 6)(6)(7); //» 25
// Reverse arguments
const prop = (object, key) => object[key];
const getName = curryRight(prop)('name');
getName({ name: 'John Smith', age: 42 }); //» 'John Smith'
类型脚本
许多功能的类型是推断出来的. 然而,一些职能,如 变量函数,需要明确类型:
const add = (...args: number[]) => args.reduce((a, b) => a + b, 0);
const addFourItems = curry(add, 4) as VariadicCurry<
// argument types
[number, number, number, number],
// return type
number
>;
// Includes helpers for functions accepting <=5 args
const addTwo = curry(add, 2) as Curry2<number, number, number>;
API 密码
curry
curry(fn: Function, arity?: number): any;
返回一个函数的参数,直到所有函数都存在 提供.
curryRight
curryRight(fn: Function, arity?: number): any;
与 curry,但一旦提供了限制,则撤销所有参数.
为需要提供针对具体情况的论据这一共同用途提供了条件
在提供第一个论据之前.
例如:
import { curryRight } from '@blakek/curry';
const users = [
{ username: 'blakek' },
{ username: 'gsandf' },
{ username: 'google' }
];
const prop = (object, key) => object[key];
const getUsername = curryRight(prop)('username');
users.map(getUsername); //» [ 'blakek', 'gsandf', 'google' ]
捐款
节点.js 财务报告和审定财务报表 雅伦 要求与该项目合作.
要安装所有依赖, 运行 :
yarn
有用的命令
yarn build | 将工程构建为 ./dist |
yarn format | 按照 Pretier 样式格式化源 |
yarn test | 运行项目测试 |
yarn test --watch | 运行工程测试, 监视文件更改 |
许可证
麻省理工学院