horat1us/map-iterator

Map 迭代器实现

1.0.1 2021-08-16 11:09 UTC

This package is auto-updated.

Last update: 2024-09-16 18:23:01 UTC


README

Latest Stable Version Total Downloads codecov Test Package

俄语文档

在产生之前将内部迭代器值映射到映射器。

灵感来自 \FilterIterator\CallbackFilterIterator

安装

使用 composer

composer require horat1us/map-iterator:^1.0

使用方法

MapIterator

使用抽象方法在产生之前映射值。

参见 ./example/map-iterator.php

<?php

use Horat1us\Util\MapIterator;

class IntegerPlusOneInterator extends MapIterator
{
    public function map($item)
    {
        if (!is_int($item)) {
            throw new \InvalidArgumentException("Unable map not-integer item.");
        }
        return $item + 1;
    }
}

$numbers = [1,2,3];
$iterator = new IntegerPlusOneInterator(new \ArrayIterator($numbers));
print_r(iterator_to_array($iterator)); // Array ( [0] => 2, [1] => 3, [2] => 4 )

CallbackMapIterator (推荐)

使用回调在产生之前映射值。

参见 ./example/map-iterator.php

<?php

use Horat1us\Util\CallbackMapIterator;

$numbers = [1,2,3];
$powCallback = static fn(int $number) => pow($number, $number);
$iterator = new CallbackMapIterator(new \ArrayIterator($numbers), $powCallback);

print_r(iterator_to_array($iterator)); // Array ( [0] => 1, [1] => 4, [2] => 27 )

许可证

BSD 3