제너레이터(Generator)
제너레이터는 함수 실행을 일시정지하고 다시 멈췄던 부분부터 실행할 수 있습니다.
yield
일반적인 yield의 사용 형태는 반복하는 코드에 yield 키워드가 사용된 함수 실행을 중지하고 값을 제공합니다.
쉽게 말해 yield 키워드가 사용된 함수 실행을 일시 중지한다는 점을 제외하면 return 키워드와 유사합니다.
<?php
function go() {
for ($i = 1; $i <= 3; $i++ ) {
yield $i;
}
}
$start = go();
foreach ($start as $value) {
echo $value;
echo ", ";
}
/***********출력*************
1, 2, 3,
****************************/
?>
yield from
'yield from'은 모든 값을 출력하고 그 후 외부 제너레이터에서 실행이 계속됩니다.
즉, 'yield from'을 사용하여 내부 yield 값을 일시정지하지 않고 모두 출력합니다.
<?php
function go() {
yield 1;
yield 2;
yield from [3, 4];
yield from new ArrayIterator([5, 6]);
yield from seven_eight();
yield 10;
}
function seven_eight() {
echo 7;
yield from eight();
}
function eight() {
yield 8;
yield from nine();
}
function nine() {
yield 9;
}
foreach (go() as $num) {
echo $num;
echo ", ";
}
/***********출력*************
1, 2, 3, 4, 5, 6, 78, 9, 10,
****************************/
?>
반응형
'PHP' 카테고리의 다른 글
[PHP] CURL를 통해 POST 형식으로 body 전송 - JSON 형태로 전송 (0) | 2021.08.06 |
---|---|
[PHP] CURL를 통해 header 전송 (0) | 2021.08.06 |
[PHP] @(골뱅이) 의미 (0) | 2020.09.06 |
[PHP] 연산자 우선순위 (0) | 2020.09.06 |
[PHP] 유형 연산자 - instacnof (0) | 2020.09.06 |