diephp / sequences
序列迭代器
v1.0.0
2024-05-24 12:58 UTC
Requires
- php: ^7.4 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^9
README
序列的无限迭代器
无限迭代器是处理无限或大数据序列的有力工具。设计时考虑了效率和灵活性,这些迭代器允许无缝遍历和操作序列,而无需将整个序列加载到内存中。
安装
通过Composer安装包
composer require diephp/sequences
或手动将其添加到您的 composer.json
"require": { "diephp/sequences": "^1.0.0" }
主要功能
无限序列:优雅地处理无限序列,使其适用于数据持续生成或流出的场景。惰性评估:元素按需生成,确保最小内存使用和优化性能。可定制:轻松定义自定义序列和行为以满足特定需求。可组合:将多个迭代器组合在一起以创建复杂的数据流和转换。
用例
数据流:非常适合处理连续数据流的程序,如实时数据或实时分析。大数据集处理:有效地处理无法全部加载到内存中的大数据集。算法实现:非常适合实现需要无限序列的算法,如斐波那契序列或素数。
示例
ExponentialSequence
表示实现迭代器接口的指数序列。
$sequence = new \DiePHP\Sequences\ExponentialSequence(1, 100); foreach ($sequence AS $value) { var_dump($value); } /** * int(1) * int(2) * int(4) * int(8) * int(16) * int(32) * int(64) ...... */
ProgressiveSequence
表示可以迭代的递增序列。
$sequence = new \DiePHP\Sequences\ProgressiveSequence(100, 50); foreach ($sequence AS $value) { var_dump($value); } /** * int(100) * int(150) * int(250) * int(400) * int(600) * int(850) * int(1150) ...... */
RandSequence
表示实现迭代器接口的随机序列生成器。
$sequence = new \DiePHP\Sequences\RandSequence(50, 60); foreach ($sequence AS $value) { var_dump($value); } /** * int(55) * int(58) * int(51) * int(55) * int(60) * int(54) * int(51) * int(50) * int(55) ...... */
LinearSequence
表示实现迭代器接口的线性序列。
$sequence = new \DiePHP\Sequences\LinearSequence(1, 10); foreach ($sequence AS $value) { var_dump($value); } /** * int(1) * int(11) * int(21) * int(31) * int(41) * int(41) * int(51) ...... */
$sequence = new \DiePHP\Sequences\LinearSequence(0, 10); foreach ($sequence AS $value) { var_dump($value); } /** * int(0) * int(10) * int(20) * int(30) ...... */
测试
composer test
结论
序列的无限迭代器为管理和遍历无限或大数据序列提供了一个强大的解决方案。它们的惰性评估和定制能力使它们适用于各种应用,确保高效有效地处理数据。
许可证
此项目采用MIT许可证。有关详细信息,请参阅LICENSE文件。