为什么我的 forEach lambda 不允许我使用 Java 中的 return 语句退出函数?

为什么我的 foreach lambda 不允许我使用 java 中的 return 语句退出函数?

假设你有一篮子食物:

list basket = list.of(     new food("apple", fruit),     new food("banana", fruit),     new food("carrot", vegetable),     new food("orange", fruit),);

并且要求仅接受仅装满水果的篮子。为了满足这个要求,您决定实现一个 for 循环:

private boolean containtsonlyfruits(list basket) {for (food food : basket) {        if (food.getfoodtype() != fruit) {            return false;        }    }    return true;}

然后,您记得您一直在学习 java lambda 和更实用的方法,因此您决定在 foreach lambda 中编写相同的内容:

private boolean containtsonlyfruits(list basket) {    basket.foreach(food -> {        if (food.getfoodtype() != fruit) {            return false;        }    });    return true;}

只是遇到一个错误:

意外的返回值

这是为什么?

lambda 只不过是一个函数。在这种情况下,是一个匿名函数,或者换句话说,是一个没有名称的函数。就像任何其他函数一样,lambda 可以接收参数并期望返回一些内容。

立即学习“Java免费学习笔记(深入)”;

当你尝试从 foreach lambda 返回 false 时,你实际上是在尝试退出这个匿名函数并输出一个布尔值。但是,foreach 函数预计不会返回任何结果。这根本不是这个功能的实现方式。

事实上,如果你看一下 foreach 函数的实现,你会发现它接受一个 consumer:

default void foreach(consumer action) {    objects.requirenonnull(action);    for (t t : this) {        action.accept(t);    }}

消费者是一个接口,表示接受单个输入参数且不返回结果的操作。在此实现中,您可以看到在底层,foreach 函数使用 foreach 循环,执行给定的操作并且不返回任何内容。

vizcom.ai vizcom.ai

AI草图渲染工具,快速将手绘草图渲染成精美的图像

vizcom.ai 139 查看详情 vizcom.ai

因此,为了满足函数式方法中的操作,我们需要找到另一个 lambda。这里有一个很好的候选者:allmatch。

使用 allmatch lambda,我们可以检查篮子中的所有元素是否都是水果:

private boolean onlyfruits(list basket) {    return basket.stream().allmatch(food -> food.getfoodtype() == fruit);}

如果是这样的话,我们的 lambda 将返回 true。如果我们看一下 allmatch 的内部:

boolean allMatch(Predicate predicate);

我们将看到 allmatch 函数需要一个谓词。

谓词是一个函数式接口,就像消费者一样,但它的工作方式有点不同。 consumer 表示接受单个输入参数且不返回结果的操作,而 predicate 表示一个参数的谓词(布尔值函数),用于测试对象的条件并返回布尔值(true 或 false) ).

还有其他非常重要的功能接口。你能告诉我它们是什么以及它们如何工作吗?

保持好奇心!

贡献

写作需要时间和精力。我喜欢写作和分享知识,但我也有账单要付。

如果您喜欢我的作品,请考虑通过“买杯咖啡”捐款:https://www.buymeacoffee.com/raphaeldelio

或者发送给我比特币:1hjg7pmghg3z8rath4aiuwr156bgafj6zw

以上就是为什么我的 forEach lambda 不允许我使用 Java 中的 return 语句退出函数?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/886240.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月28日 12:51:02
下一篇 2025年11月28日 12:57:49

相关推荐

  • html5文件如何实现区块链存证 html5文件哈希值上链的流程

    生成HTML5文件的SHA-256哈希值并记录;2. 选择支持数据上链的区块链平台并获取访问权限;3. 通过智能合约或交易附加字段将哈希值写入区块链;4. 保存交易ID、区块信息等作为存证凭证;5. 验证时重新计算文件哈希并与链上值比对,一致则未被篡改。 如果您需要将HTML5文件进行区块链存证,确…

    2025年12月23日
    000
  • JavaScript的BigInt类型怎么处理大整数?

    javascript处理大整数的核心是bigint类型,它解决了number类型精度丢失的问题。1. bigint通过在整数后加n定义,如123n;2. 使用bigint()构造函数转换数值或字符串;3. 支持算术和位运算但不能与number混合运算;4. 比较操作允许与number比较但严格相等区…

    好文分享 2025年12月22日
    000
  • 哈希算法是什么?常见哈希函数介绍

    哈希算法是数据安全的基石,因其单向性、抗碰撞性和雪崩效应,广泛用于数据完整性校验、密码存储、数字签名和区块链。它通过固定长度哈希值确保信息不可篡改,即使输入微小变化也会导致输出巨大差异。MD5和SHA-1因碰撞漏洞已不安全,SHA-2(如SHA-256)成为主流,广泛用于区块链和SSL/TLS;SH…

    2025年12月20日
    000
  • js中多个条件并列判断的最佳写法

    当处理多条件判断时,使用对象、map或策略模式等方法能显著提升代码的可读性与可维护性,并优化性能。传统的 if/else 或 switch 语句在面对大量条件时会导致冗长、嵌套复杂的代码结构,增加出错概率,且难以扩展和修改。1. 使用对象或 map 可将条件与操作直接映射,减少冗余代码,提高查找效率…

    2025年12月20日 好文分享
    000
  • 医生旅程:恢复在线交易中损失的资金

    我叫Patrick Bonneau,在洛杉矶行医已有15年。我对比特币和其他加密货币平台并不了解,因此不幸掉入了一个在线交易骗局,损失近150万美元。起初,该平台看起来很正规,有专业的视频和诱人的收益截图。投资后,初期一切顺利,骗子还会定期更新信息。但很快,平台就失联了,我无法访问账户或提取资金,身…

    2025年12月19日
    000
  • 适合初学者的比特币投资

    通过 TrandexPro.com 释放比特币投资的力量 在快速发展的金融领域,比特币已成为一种开拓性资产,以其巨大的回报潜力吸引着全世界的投资者。无论您是经验丰富的交易者还是热情的新手,比特币投资都已成为增加财富的令人垂涎的途径。通过像 TrandexPro.com 这样的平台,您只需 100 美…

    2025年12月19日
    000
  • Meme 代币激增:本周的上涨一览

    Meme 代币激增:本周的上涨一览 本周对于模因硬币爱好者来说尤其令人兴奋,因为几种流行硬币的价值大幅上涨。这些代币通常以其俏皮和幽默的品牌为特点,在加密货币市场上获得了关注,吸引了经验丰富的投资者和新手。 推动激增的关键因素 社区参与:在模因币空间中,社区的力量不可低估。由于 Twitter 和 …

    2025年12月19日
    000
  • 加密货币 API 中实时数据对开发人员的重要性

    如果您正在开发使用加密货币数据的应用程序,您可能知道实时数据有多么重要。加密货币价格变化非常快,因此掌握最新信息至关重要。本文主要介绍为什么加密货币 API 中的实时数据如此重要以及它如何为开发人员提供帮助。为什么实时数据在加密货币 API 中很重要当您处理加密货币时,实时数据非常重要。加密货币市场…

    2025年12月19日
    000
  • 如何将 C++ 框架与区块链技术集成?

    摘要:将 C++ 框架与区块链技术集成可创建强大的去中心化应用程序。步骤如下:选择框架:选择 Boost.Asio、libbitcoin 或 Ethereum.cpp 等框架。安装软件库:安装 Boost.Beast(Boost.Asio)、NBitcoin(libbitcoin)或 Web3cpp…

    2025年12月18日
    000
  • GAE Go 中处理 URLFetch POST 请求的正确姿势

    本文旨在解决Google App Engine (GAE) Go环境中通过urlfetch.Transport.RoundTrip发送POST请求时遇到的问题。当使用GET请求时功能正常,但POST请求却无法获取响应。核心解决方案是,在GAE Go中执行HTTP POST请求是完全可行的,关键在于使…

    2025年12月15日
    000
  • Go语言中调用JSON-RPC服务的实践指南

    本文旨在解决Go语言中通过HTTP调用JSON-RPC服务时遇到的挑战。由于标准库net/rpc/jsonrpc当前不支持HTTP传输,我们将探讨两种主要方法:一是通过手动构建HTTP POST请求实现直接通信,这适用于简单场景;二是通过实现rpc.ClientCodec接口,将自定义HTTP传输逻…

    2025年12月15日
    000
  • Go语言中实现JSON-RPC over HTTP客户端的策略与实践

    Go语言标准库的net/rpc/jsonrpc包不直接支持基于HTTP的JSON-RPC调用。本文将指导读者如何通过手动发送HTTP POST请求构建JSON-RPC客户端,并探讨如何利用net/rpc包的ClientCodec接口实现更通用、更优雅的解决方案,从而有效应对在Go中与JSON-RPC…

    2025年12月15日
    000
  • Golang的hash库有哪些加密散列函数 对比SHA256与MD5应用场景

    golang 的 hash 标准库常见算法包括 md5、sha1、sha256、sha512 等,位于 crypto 包下,使用方式统一。1. sha256 与 md5 的区别在于安全性、输出长度和性能:md5 存在碰撞风险,输出 128 位哈希,适合快速校验;sha256 抗碰撞性强,输出 256…

    2025年12月15日 好文分享
    000
  • 学习熊猫,一个功能强大的库,用于数据可视化,数据操作和分析

    pandas:python数据分析利器,轻松驾驭海量数据 Pandas是Python中最流行的数据分析库之一,无论数据集大小,都能轻松完成数据清洗、转换和分析。本文将演示如何使用Pandas获取和处理数据,并将其可视化。 无需本地安装,Google Colab提供基于云的Jupyter Notebo…

    2025年12月13日
    000
  • 在 Conky 面板上显示 Python 脚本输出

    在这篇文章中,我将演示一种使用 python 和 conky 直接在桌面面板上显示来自 api 请求的数据的简单方法。 客观的 目标是从 api 获取信息并将其显示在桌面面板上。在此示例中,我将使用 python 来处理 api 请求,并使用 conky 来创建面板。 我们将使用 economia.…

    2025年12月13日
    000
  • 聘请经过认证的加密恢复专家 / ARGONIX HACK TECH

    加密货币世界提供了巨大的机遇,但也伴随着巨大的风险,特别是在欺诈方面。作为一名成为欺诈性加密货币平台受害者的投资者,我可以证明损失大量资金所造成的情感和财务损失。然而,我的康复之旅将我引向了 ARGONIX HACK TECH,他们在减少加密货币欺诈方面无与伦比的专业知识帮助我收回了我的资产并恢复了…

    2025年12月13日
    000
  • Python AI 和区块链:未来科技的救世主还是过眼云烟?

    Python AI 和区块链:一场闹剧还是一场革命? 关于 Python 人工智能 (AI) 和区块链的前途一直存在争论,有人认为这些技术是昙花一现,而另一些人则认为它们将彻底改变我们的世界。那么,事实是什么? 人工智能:有前途还是夸大其词? AI 是一种计算机科学领域,它使机器能够执行通常需要人类…

    2025年12月13日
    000
  • Python 人工智能和区块链:未来是昙花一现还是改变世界的革命?

    Python 人工智能和区块链:昙花一现还是改变世界的技术? 对于人工智能 (AI) 和区块链等技术,一直存在这样的疑问:它们是否只是一场炒作,还是真正改变世界的革命性力量? 特定的,一些专家认为 Python AI 和区块链存在成为一场闹剧的风险。不过,也有人坚信这些技术具有巨大的潜力。 对于 A…

    2025年12月13日
    000
  • 如何了解闪电比特币

    要识别 Flash Bitcoin 软件,您可以寻找以下特征: 能够生成虚假的比特币交易:Flash Bitcoin 软件可以创建看似真实但实际上无效的虚假比特币交易。临时交易:这些虚假交易将在区块链网络上保留一段有限的时间,通常是 90 天,然后被网络拒绝。无交易费:由于交易是假的,所以不涉及交易…

    2025年12月13日
    000
  • PHP怎么计算文件MD5_PHP生成文件MD5校验值教程

    最直接的方式是使用PHP的md5_file()函数计算文件MD5校验值,它通过流式读取高效生成32位十六进制字符串,适用于验证文件完整性;对于大文件或需精细控制的场景,推荐使用hash_init()、hash_update()和hash_final()分块读取,避免内存溢出;尽管MD5计算快速且广泛…

    2025年12月12日
    000

发表回复

登录后才能评论
关注微信