PHP Conference Japan 2024

Generator::current

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Generator::current取得 yield 的值

說明

public Generator::current(): mixed

參數

此函式沒有參數。

回傳值

回傳 yield 的值。

新增註記

使用者貢獻的註記 3 則註記

gib-o-master
3 年前
current() 會推進未使用的產生器,與 next() 相同,它會執行第一步/第一次迭代。後續呼叫則不會。

未 yield 的值將會是 NULL
ctx2002 at gmail dot com
1 個月前
我認為「gib-o-master」的說法是錯誤的。
Generator::current 方法並不會推進「未觸及的生成器」。

讓我舉個例子

function y1()
{
yield 1;
}

$g = y1();

if ($g->valid()) { //此時,PHP 輸出 "valid"
echo "valid\n";
}

echo "目前值 v:" . $g->current() . "\n"; //此時,PHP 輸出 目前值 v:1

if ($g->valid()) { //此時,PHP 仍然輸出 "valid"
echo "valid\n";
} else {
echo "not valid\n";
}

如果 Generator::current 方法會推進生成器,那麼上面的 If 陳述式應該會輸出 "not valid"
mrsoftware73 at gmail dot com
6 年前
<?php
function gen_one_to_three() {
for (
$i = 1; $i <= 3; $i++) {
// 注意 $i 的值會在 yield 之間保留。
yield $i;
}
}

$generator = gen_one_to_three();
foreach (
$generator as $value) {
echo
"regular : ".$value , PHP_EOL;
echo
"使用 current 函式 : ".$generator->current(),PHP_EOL;
}
?>
To Top