在回调中使用yield?

2024-03-09

我有一个函数y()这应该会产生一些记录。

然而,该函数在回调中获取记录,并将其传递给另一个函数d()访问数据。d()不返回或产生任何东西。

如果其他功能,这种模式是否可能d()接受回调被认为是黑匣子?
替代设计是什么?

function y() {
    d( function ($records) { // May be called multiple times
        // How to yield for "y()"?
        foreach ($records as $record)
            yield $record;
    } );
}

Writing yield将匿名回调函数变成生成器函数。您需要调用此生成器函数来接收生成器,然后迭代该生成器。但是由于d正在调用匿名函数,它是最终以生成器结束的函数,而不是调用者y。所以这个用处不大,实际上是行不通的。

看来你能做的最好的事情就是:

function y() {
    $results = [];
    d(function ($val) use (&$results) {
        $results[] = $val;
    });
    return $results;
}

foreach (y() as $val) {
    echo $val, PHP_EOL;
}

这当然取决于d在某个时刻返回。如果在内部它使用无限循环,这不会有任何好处。在这种情况下,您需要继续从回调中调用更多回调,这是典型的事件侦听器模式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在回调中使用yield? 的相关文章

  • 按某些字段排序的迭代学说集合

    我需要这样的东西 products Products getTable gt find 274 foreach products gt Categories gt orderBy title as category echo categor
  • PHP - 从 HTML 中提取文本、翻译并放回

    我正在使用 API 来翻译我的博客 但它有时会弄乱我的 html 这让我需要更多的工作来修复所有问题 我现在想做的是从 html 中提取内容 翻译它并将其放回原来的位置 我首先尝试使用 preg replace 来执行此操作 其中我将用诸如
  • 带代理的 PHP CURL 导致套接字上的 CLOSE_WAIT

    我正在使用 PHPcurl 库来建立连接并从 WEB 检索内容 通常 我有多个 SOCKS5 代理服务器在 localhost 上运行 端口从 10300 到 10350 PHP 随机选择一个端口 My code ch curl init
  • 如何通过 docker-php-ext-install 安装 php 扩展?

    为了解决问题 https stackoverflow com questions 37526509 how to install pdo driver in php docker image 我现在尝试通过安装 mysql pdo dock
  • mysqli_fetch_assoc() 期望参数 1 为 mysqli_result,布尔值给出

    看来我的 mysqli query 不起作用 我该怎么办 在密码附近的查询中使用 AND 而不是逗号 这就是查询返回 false 并抛出该错误的原因 select
  • 如何使用 PHP 读写编辑 pptx/docx/xlsx 文件?

    是否有库扩展可用于使用 PHP 有效处理 pptx docx xlsx 文件 到目前为止 我对 PPTX 文件更感兴趣 据我所知 这些文件格式 docx xlsx pptx 只是 zip 文件 它们属于 Office Open XML OO
  • 出现致命错误 Uncaught CurlException: 26: 无法打开文件

    我正在尝试使用 PHP 的 GD 库创建朋友的动态图像 并且需要将其上传到我的朋友个人资料中 但我不断收到错误消息 致命错误 未捕获的 CurlException 26 无法打开第 820 行 home p170r760 public ht
  • 重定向和引用者

    我的实际实现要复杂得多 需要身份验证和一堆其他东西 但以最简单的形式 这就是我遇到的问题 使用标头重定向不会将其自身显示为引用者 所以 假设我有三个页面 start php middle php 和 end php 启动 php a hre
  • PHP数组转SQL

    array array 53 gt array num gt 20 name gt aaa 10 gt array num gt 20 name gt bbb sql 插入数据 id num name 值 53 20 aaa 10 20 b
  • Laravel 5.2 升级 - 找不到类 AuthServiceProvider

    我目前正在花时间将我的项目从 Laravel 4 2 升级到 Laravel 5 2 经过很多麻烦 我设法让 5 1 版本正确运行 因此我按照官方文档中所述开始了 5 1 到 5 2 的过程 https laravel com docs 5
  • 如何设置pdf的标题名称。查看文档时(新选项卡)[重复]

    这个问题在这里已经有答案了 我们如何更改pdf的标题名称 查看文档时 我没有使用任何 控制器是模态的 我只是在 href 标签中传递 url 但我想 更改标题名称 a target blank href class icon btn blu
  • PHPSpreadsheet 文本旋转到 90 不起作用

    我正在尝试使用文本旋转到 90 度来使单元格具有垂直文本 但它不起作用 所有文本都是水平显示的 也许我做错了什么 这是我的 php 代码 spreadsheet new Spreadsheet Create a new worksheet
  • 我被击败了 我只是想开发自己的画廊 但一开始我就失败了 在 a 中显示图像作为背景 div 我已经把我的代码颠倒了 搜索了网络 搜索了 stackoverflow 尽管我无法解决问题 这是我的代码 HTML PHP div class im
  • 服务中有很多依赖项

    我在服务层的应用程序中遇到依赖关系问题 我有以下课程
  • 如何覆盖 Symfony2 包中的实体

    我在用着FOS用户包 for Symfony2 我需要能够注册一个用户不验证电子邮件是否唯一 我只需要一个有效的电子邮件 所以许多用户可以拥有相同的电子邮件 我知道这很奇怪 但我需要它 我在捆绑包中有一个实体 用户 扩展 FOSUserBu
  • Docker 应用程序更新后无法连接到数据库

    在我的公司 我有一个旧的 Symfony 应用程序在 Docker 容器中运行 该应用程序连接到一个 SQL 数据库 该数据库也在 Docker 容器内运行 该图像是使用 php 7 2 apache stretch 构建的 但该版本已不再
  • Mac OS Snow Leopard 上的两个版本的 PHP 以及使用 PECL 安装 xdebug

    我正在使用MAMP在我阅读一些有关内置 Apache PHP 的文章之前 我已经在 PHP 开发 标准 中使用过一段时间了雪豹 我决定转向那些我提供的但似乎有很多问题的人 第一件事是当我使用MAMP时 我将PEAR从1 9 0升级到1 9
  • 如何使用 php 将文本区域中的链接转换为链接元素?

    我正在创建一个脚本 它包含一个发布脚本 但我希望用户直接从其他任何地方复制链接 当他们发布链接文本时 链接文本应自动将链接转换为链接元素 a 例如 Ask this on http stackoverflow com now 成为 Ask
  • 更新 Laravel 路由文件没有效果

    我正在尝试创建一个视图来显示数据库中的数据 但我发现我的路线文件不再执行任何操作 目前我正在尝试让测试功能正常工作 但是当我去 test它只是说 找不到网页 其他路线有效 即使我删除所有内容并保存文件 所有其他路线都可以工作 我努力了art
  • 上传文件最安全的方法是什么?

    我工作的公司最近在我们托管的网站上遭受了许多标头注入和文件上传漏洞攻击 虽然我们已经解决了标头注入攻击的问题 但我们尚未控制上传漏洞 我正在尝试设置一系列即插即用类型的上传脚本以供内部使用 设计人员可以将其复制到其网站的结构中 修改一些变量

随机推荐

  • getCallbackTokenAsync 返回“发生内部错误”

    我创建了一个 Outlook 加载项 它使用mailbox getCallbackTokenAsync 使用 EWS API 进行身份验证的函数 对于大多数加载项用户来说 这没有问题 但是 对于某些用户来说 调用此函数会导致 An inte
  • 将C库添加到docker

    我有一个带有 c 库依赖项的 golang 项目 例如 pbc 我创建一个 dockerfile FROM golang 1 9 6 alpine3 7 RUN mkdir p go src app WORKDIR go src app C
  • 没有可用的测试..使用虚拟机上的构建工具和测试代理通过 exe 进行测试

    我正在尝试在 Windows VM 上运行所有包含的 exe 使用 Costura 创建 根据中的答案这个问题 https stackoverflow com questions 3402899 can i use mstest exe w
  • 如何使用ContinueWith正确管理任务中的异常

    在阅读有关任务和异常管理的信息后 我使用以下代码来管理任务中引发的异常 Task myTask Task Factory StartNew doTask CancellationToken None TaskCreationOptions
  • 不使用 --reintegrate 和 svn merge back to trunk 的后果

    我是颠覆新手 上个月我做了一些更改并将它们合并到主干中 一切看起来都很好 我的更改按预期传播了 但今天我重读了有关合并的内容 看到了this http svnbook red bean com en 1 7 svn book html sv
  • 如何在 gitlab CE 9 中将项目从一个组转移到一个用户?

    我想将项目从一个组转移到另一个用户 例如 来自https gitlab local groupname projectname https gitlab local groupname projectname to https gitlab
  • 如何在 C 或 C++ 中获取/链接外部函数?

    EDIT 我想我应该澄清一下 以防万一 我使用的是 AIX Unix 机器 所以我使用 VAC 编译器 没有 gnu 编译器 End edit 我对 C C 很生疏 所以如果这是一个简单的问题 请原谅我 我想从我的一些 C 程序中取出常用函
  • helgrind (valgrind) 可以与 c++11 futures 一起使用吗

    当我将 helgrind 与 C 11 futures 和打包任务一起使用时 我得到了我认为是误报的信息 以下是在 CentOS6 系统上使用 gcc 6 3 0 和 valgrind 3 12 的情况 我尝试按照文档中的建议来提供注释 我
  • css盒子阴影+透明背景图片=直观分解

    我有一个按钮图像用作某些链接的背景图像 背景图像有圆角 我想使用 css 投影而不是将投影放在图像中 问题是 阴影似乎是绘制的around元素 虽然我有点希望通过背景图像的透明部分看到投影颜色 但我看到的是背景颜色 看到这个jsfiddle
  • 如何更改 BigQuery 重复记录的 col 类型

    我正在尝试更改重复记录的 col 类型STRING to TIMESTAMP BQ 文档提供了一些建议 手动更改模式 https cloud google com bigquery docs manually changing schema
  • UIPageViewController:子控制器在滚动期间忽略状态栏高度

    我遇到了一些麻烦UIPageViewController 如果我滚动到新页面 新的视图控制器是behind状态栏while我正在滚动 滚动后 视图控制器自行定位below状态栏 我正在使用故事板 通用 UIPageViewControlle
  • 有没有一种有效的方法来引用常量,而不是只读?

    我们来看下面的 C 代码 include
  • 与网络服务器同步核心数据

    我正在创建一个关于鸟类的应用程序 这个应用程序也应该在离线模式下工作 所以我决定使用核心数据 我计划有 1 个表 其中包含大约 700 条记录 所有鸟类都将显示在表格视图中 工作流程应该是这样的 用户启动应用程序 请求在后台发送到服务器 响
  • 如何使用批量更改壁纸

    我需要制作一个批处理文件 将壁纸更改为与bat文件位于同一位置的图片 我当前有以下代码 reg add HKCU Control Panel Desktop v Wallpaper f t REG SZ d c images wallpap
  • 哪一个更快? List.contains() 或 Map.containsKey()

    我正在编写一个算法 在其中寻找成对的值 这些值加在一起时会产生我正在寻找的另一个值 我发现使用Map将使我的算法速度从 O n 开始 后来我意识到我并没有真正使用我的Map so a List就足够了 我在谷歌上进行了强力搜索 但在我的问题
  • 如何在Sqlite3中将数组存储在一列中?

    有没有办法将整数数组存储在表的一列中 我想要这样的o p ident value count 563 0 10 0 0 1 100 2 200 3 300 4 400 5 500 6 我已经通过 postgres 实现了这
  • 为什么 SSL 握手会出现“无法生成 DH 密钥对”异常?

    当我与某些 IRC 服务器 但不是其他服务器 可能是由于服务器的首选加密方法 建立 SSL 连接时 出现以下异常 Caused by java lang RuntimeException Could not generate DH keyp
  • 使用 CSS 为黑色图标赋予另一种颜色

    我看到一些应用程序尽管包含黑色图标 但有些应用程序如何使用 CSS 将图标转换为不同的颜色 我似乎无法重复这个过程 这是我的 back css 文件 dashboard buttons a width 80px height 80px bo
  • Solr 搜索查询返回全头异常

    我正在 C 应用程序中调用托管在其他计算机上的远程 solr 搜索 现在 由于我的查询长度变得太大 因此搜索引擎返回全头错误 我无法减少查询长度 所以我只是想知道我可以提出同样的邮寄请求吗 我该怎么做这个 请建议我 谢谢 看起来您遇到了 j
  • 在回调中使用yield?

    我有一个函数y 这应该会产生一些记录 然而 该函数在回调中获取记录 并将其传递给另一个函数d 访问数据 d 不返回或产生任何东西 如果其他功能 这种模式是否可能d 接受回调被认为是黑匣子 替代设计是什么 function y d funct