jcstrandburg / demeter
集合库
v0.8
2018-11-04 22:17 UTC
Requires
- php: ^7.0
- jcstrandburg/extension-methods: ^1.1
Requires (Dev)
- phpunit/phpunit: ^7.3
README
这个库提供了一组不可变集合类,允许以一致、面向对象、流畅的方式操作数据集合。它主要受到C#中的LINQ和Java Stream API的启发。
安装
composer require jcstrandburg\demeter
用法
纯PHP
$x = array_slice( array_map( function ($x) {return $x * 2;}, array_filter([1, 2, 3, 4, 5], function ($x) {return $x % 2 == 1;})), 0, 2);
使用Demeter
use function Jcstrandburg\Demeter\sequence; use Jcstrandburg\Demeter\Lambda; $x = sequence([1, 2, 3, 4, 5]) ->filter(Lambda::isOdd()) ->map(Lambda::multiplyBy(2)) ->take(2);
特性
版本历史
未发布
0.8
新增
Extensions
静态类以支持扩展方法
0.7
变更
- 所有集合类现在实现
IteratorAggregate
而不是扩展IteratorIterator
GroupedCollection::getGroupKeys
现在返回一个Collection
而不是一个数组- 现在可以安全地对同一个
Sequence
或其派生进行并发迭代。
例如,如果 $x = sequence([1,2,3,4]);
之前: $x->zip($x->map(Lambda::plus(1)), Lambda::add())->toArray() == [3,6]
现在: $x->zip($x->map(Lambda::plus(1)), Lambda::add())->toArray() == [3,5,7,9]
移除
LazyRewindableIterator
已被内部实现替换
新增
as_iterator
工具函数
弃用
as_traversable
- 使用as_iterator
代替
0.6
修复
- 从
ArrayGroupedCollection
调用父构造函数
更改
- 破坏性更改:将
GroupedCollection
转换为接口,现有实现成为ArrayGroupedCollection
- 破坏性更改:将
Grouping
转换为接口,现有实现成为ArrayGrouping
- 使
Collection
扩展Countable
xrange
现在返回一个Sequence
新增
Lambda::constant
Lambda::toArray
Lambda::getGroupKey
Sequence::zip
Sequence::chunk
Sequence::join
Sequence::implode
0.5
更改
- 破坏性更改:
HashSet
的行为现在像是一个真正的集合(使用哈希对桶进行散列,但不进行相等比较) - 破坏性更改:将
Sequence
转换为接口,现有实现成为LazySequence
- 破坏性更改:将
Collection
转换为接口,现有实现成为ArrayCollection
- 破坏性更改:将
Dictionary
转换为接口,现有实现成为ArrayDictionary
- 破坏性更改:之前返回
HashSet
的函数现在返回Set
新增
- 引入
Set
接口,HashSet
实现该接口 Sequence::except
和Sequence::intersect
Lambda
工具类dictionary
和set
工厂函数
0.4
新增
HashMap::addMany
HashMap::removeMany
Sequence::toDictionary
Dictionary
0.3
更改
sequence
和collect
现在将返回其参数未修改的版本,如果它已经是正确的类型
新增
HashSet
Sequence::asSet
Sequence::first
Sequence::firstOrNull
Sequence::last
Sequence::lastOrNull
Sequence::single
Sequence::singleOrNull
0.2
新增
Sequence::groupBy
GroupedCollection
Grouping
0.1
新增
Sequence
Collection
- 各种工具函数
LazyRewindableIterator
MappedIterator
SkipWhileIterator
TakeWhileIterator
许可证
本项目使用MIT许可证 - 有关详细信息,请参阅LICENSE.md文件