比较 Lambda:全面概述
简介
Lambda,也称为匿名函数或闭包,因其简洁性和表达性而广泛应用于现代编程语言中。但是,可能会出现需要比较两个 lambda 的情况,无论是功能等效性还是同一性。
规范与实现角度
从语言规范角度,保证 lambda 表达式创建实现目标函数式接口的类的实例。但是,这些实例的唯一性或别名未指定,从而为实现提供了灵活性。
实现注意事项
目前,lambda 表达式实现在合成类(生成以实现 lambda)并捕获程序中的站点。在不同站点捕获的两个 lambda,即使功能相同,也可以使用不同的类来实现。但是,对于在同一捕获位点评估的非捕获 lambda,引用相等 (==) 意味着功能等效。
替代方法
局限性
为 lambda 建立函数相等本质上是具有挑战性的。两个 lambda 可能在功能上相同,但如果它们不是在同一捕获位点求值或转换为不同的函数接口类型,则无法保证引用相等。
toString 注意事项
Java 专家组 (EG) 内部一直在讨论如何为 lambda 提供更具描述性的 toString 实现。不过,目前还没有得出明确的结论,这仍然是未来考虑的话题。
以上是两个 Lambda 何时表现相同?的详细内容。更多信息请关注PHP中文网其他相关文章!