PHP Conference Japan 2024

Generator::current

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

Generator::current获取产生的值

描述

public Generator::current(): 混合

参数

此函数没有参数。

返回值

返回产生的值。

添加注释

用户贡献的注释 3 个注释

2
gib-o-master
3 年前
current() 使未触发的生成器前进,与 next() 一样,它执行第一步/迭代。后续调用不会。

未产生的值将为 NULL
0
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 "current v:" . $g->current() . "\n"; //此时,PHP 输出 current v:1

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

如果 Generator::current 方法使生成器前进,则上面的 If 语句应该输出“not valid”
0
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
"With current function : ".$generator->current(),PHP_EOL;
}
?>
To Top