Iterable — это псевдотип, появившийся в PHP 7.1. Он принимает любой массив или объект, реализующий интерфейс Traversable . Оба этих типа можно повторять с помощью foreach и использовать с yield внутри генератора .
Использование итерируемых объектов
Iterable можно использовать в качестве типа параметра, чтобы указать, что функции требуется набор значений, но не важна форма набора значений, поскольку она будет использоваться с foreach . Если значение не является массивом или экземпляром Traversable , будет выброшено исключение TypeError .
Пример #1 Пример итерируемого типа параметра
<?php
function foo(iterable $iterable) {
foreach ($iterable as $value) {
// ...
}
}
?>
Параметры, объявленные как итерируемые, могут использовать null
или массив в качестве значения по умолчанию.
Пример #2 Пример значения по умолчанию итерируемого параметра
<?php
function foo(iterable $iterable = []) {
// ...
}
?>
Iterable также может использоваться в качестве типа возвращаемого значения, чтобы указать, что функция будет возвращать итерируемое значение. Если возвращаемое значение не является массивом или экземпляром Traversable , будет выброшено исключение TypeError .
Пример #3 Пример итерируемого возвращаемого типа
<?php
function bar(): iterable {
return [1, 2, 3];
}
?>
Функции, объявляющие iterable в качестве возвращаемого типа, также могут быть генераторами .
Пример #4 Пример возвращаемого значения итерируемого генератора
<?php
function gen(): iterable {
yield 1;
yield 2;
yield 3;
}
?>
0 комментариев