您好,欢迎访问一九零五行业门户网

php生成器对象

当一个生成器函数被第一次调用,会返回一个内部generator类的对象. 这个对象以和前台迭代器对象几乎同样的方式实现了iterator 接口。
generator 类中的大部分方法和iterator 接口中的方法有着同样的语义, 但是生成器对象还有一个额外的方法: send().
cautiongenerator 对象不能通过new实例化
example #1 the generator class
<?php class generator implements iterator { public function rewind(); //rewinds the iterator. 如果迭代已经开始,会抛出一个异常。 public function valid(); // 如果迭代关闭返回false,否则返回true. public function current(); // returns the yielded value. public function key(); // returns the yielded key. public function next(); // resumes execution of the generator. public function send($value); // 发送给定值到生成器,作为yield表达式的结果并继续执行生成器. } ?>
generator::send()
当进行迭代的时候generator::send() 允许值注入到生成器方法中. 注入的值会从yield语句中返回,然后在任何使用生成器方法的变量中使用.
example #2 using generator::send() to inject values
<?php function printer() { while (true) { $string = yield; echo $string; } } $printer = printer(); $printer->send('hello world!'); ?>
以上例程会输出:
hello world!
其它类似信息

推荐信息