亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何確定生成器是否產生引用?

如何確定生成器是否產生引用?

PHP
動漫人物 2023-10-21 17:16:13
我正在編寫一個通用組件,它包裝了一個生成器并進行常規操作:按鍵過濾改變價值ETC。為了盡可能接近地模擬包裝的生成器,如果生成器正在使用引用,我想使用引用。當我嘗試使用方法迭代非引用生成器時foreach ($generator as $key => &$value),我收到以下錯誤:如果生成器聲明生成按引用,則只能按引用迭代生成器有沒有辦法查明手頭的生成器是否正在返回引用?我使用反射沒有成功:$reflectedGeneratorValueSupplier = new \ReflectionMethod($generator, 'current');$this->canReference = $reflectedGeneratorValueSupplier->returnsReference(); //always false此外,不使用foreach構造的迭代生成器對于引用根本不起作用:while ($generator->valid()) {    $key = $generator->key();    $value =& $generator->current(); //error, only variables can be passed by reference        $generator->next();}
查看完整描述

1 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

使用ReflectionGenerator然后使用getFunction似乎可行。


<?php


function &generate(&$arr)

{

? ? foreach ($arr as $key => &$value) {

? ? ? ? yield $key => $value;

? ? }

};


$input = range(0,100);

$generator = generate($input);


$r = new ReflectionGenerator ($generator);


var_dump($r->getFunction()->returnsReference()); // true


查看完整回答
反對 回復 2023-10-21
  • 1 回答
  • 0 關注
  • 114 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號