dryist/functions

常见任务的函数

0.4.0 2018-12-29 19:42 UTC

This package is auto-updated.

Last update: 2024-08-29 05:00:18 UTC


README

Build Status Code Quality Code Coverage Latest Stable Version Total Downloads License

为常见编程需求提供各种实用函数。

安装

使用 composer(composer)安装和此包的最佳方式

composer require dryist/functions

用法

函数分为几个类别

  • 代数 - 一些常见的函数式语言实用工具
  • 数组 - 用于处理数组和迭代器的辅助工具
  • 工具 - 其他各种工具

所有函数都有一个常量,该常量引用完全限定的函数名。这些常量可用于组合或管道操作。

有许多其他包提供了兼容的(和/或类似的)实用函数,包括

本包中缺失的功能可能在其他地方可以找到。

代数

always()

创建一个“K 组合器”,总是返回原始值

use function Dryist\always;

$fn = always(true);

assert($fn() === true);

compose()

创建一个“替换组合器”,用于组合两个可调用对象

use function Dryist\compose;

$fn = compose('ucwords', 'strtolower');

assert($fn('SALLY SMITH') === 'Sally Smith');

identity()

总是返回第一个输入

use function Dryist\identity;

assert(identity('foo') === 'foo');

此函数也作为 Dryist\id 的别名。

invert()

创建一个逆谓词

use function Dryist\invert;

$notNull = invert('is_null');

assert($notNull(42) === true);
assert($notNull(null) === true);

数组

所有数组函数接受 iterable 变量,包括数组、迭代器和生成器。

count()

计算列表或映射中的项目数

use function Dryist\count;

$items = [1, 2, 3];

assert(count($items) === 3);

combine()

将两个列表组合成映射

use function Dryist\combine;
use function Dryist\resolve;

$keys = ['city', 'country'];
$values = ['London', 'England'];
$map = combine($keys, $values);

assert(resolve($map) === ['city' => 'London', 'country' => 'England']);

filter()

根据值的谓词过滤列表或映射

use function Dryist\filter;
use function Dryist\resolve;
use function Dryist\values;

$positive = function (int $value): bool {
    return $value > 0;
};

$list = [-100, 0, 100];
$list = filter($list, $positive);

// Drop keys
$list = values($list);

assert(resolve($list) === [100]);

filterKey()

根据键的谓词过滤列表或映射

use function Dryist\filterKey;
use function Dryist\resolve;
use function Dryist\values;

$even = function (int $value): bool {
    return $value % 2 === 0;
};

$map = [13 => 'a', 16 => 'b', 22 => 'c'];
$map = filterKey($map, $even);

// Drop keys
$list = values($map);

assert(resolve($list) === ['b', 'c']);

相关函数

keys()

从映射中读取键到一个列表中

use function Dryist\keys;
use function Dryist\resolve;

$map = ['name' => 'Jane', 'friends' => 42];
$keys = keys($map);

assert(resolve($keys) === ['name', 'friends']);

map()

将值修饰符应用于列表或映射

use function Dryist\map;
use function Dryist\resolve;

$list = ['foo', 'bar', 'baz'];
$list = map($list, 'strtoupper');

assert(resolve($list) === ['FOO', 'BAR', 'BAZ']);

mapBoth()

将值修饰符应用于列表或映射

use function Dryist\mapBoth;
use function Dryist\resolve;

$list = ['foo', 'bar', 'baz'];
$list = mapBoth($list, function ($key, $value) {
    if ($key % 2 === 0) {
        return strtoupper($value);
    }
    return $value;
});

assert(resolve($list) === ['FOO', 'bar', 'BAZ']);

与 map() 不同的是,修饰器接收键和值。

mapKey()

将键修饰符应用于列表或映射

use function Dryist\mapKey;
use function Dryist\resolve;

$map = ['NAME' => 'Bob', 'GAME' => 'football'];
$map = mapKey($map, 'strtolower');

assert(resolve($map) === ['name' => 'Bob', 'game' => 'football'])

resolve()

iterator_to_array 的别名。

take()

通过键列表从映射中取一些值

use function Dryist\resolve;
use function Dryist\take;

$map = ['name' => 'Cassie', 'friends' => 152, 'age' => 39];
$map = take($map, ['name']);

assert(resolve($map) === ['name' => 'Cassie']);

values()

将映射的值读取到一个列表中

use function Dryist\values;
use function Dryist\resolve;

$map = ['a' => 1, 'b' => 2, 'c' => 3];
$list = values($map);

assert(resolve($list) === [1, 2, 3]);

工具

make()

创建一个构建对象的修饰符。

use function Dryist\make;
use function Dryist\map;
use function Dryist\resolve;

$list = [[1, 2, 3], [4, 5], [6]];
$list = map($list, make(ArrayIterator::class));

assert(resolve($list)[0] instanceof ArrayIterator);

stringify()

将值转换为字符串,除非它是 null。

use function Dryist\stringify;

assert(stringify(null) === null);
assert(stringify(42) === "42");