gpt4 book ai didi

lambda - 关于 Java 8 中的功能接口(interface), "function shape"是什么?

转载 作者:行者123 更新时间:2023-12-04 20:05:16 25 4
gpt4 key购买 nike

在 Java 8 中,新包 java.util.function 包含很多功能接口(interface)。该包的文档( http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html )多次引用“功能形状”:

  • 有几个基本的功能形状 ,包括 Function(从 T 到 R 的一元函数)、Consumer(从 T 到 void 的一元函数)、Predicate(从 T 到 bool 的一元函数)和 Supplier(从 R 的一元函数)。
  • 功能形状 根据它们最常用的方式具有自然的多样性。基础形状 可以通过一个arity前缀修改以表示不同的arity,例如BiFunction(二进制函数来自
    T 和 U 到 R)。
  • 还有额外派生的功能形状 它扩展了基本的功能形状 ,包括UnaryOperator(扩展Function)和BinaryOperator(扩展BiFunction)。

  • 我以前从未听说过“函数形状”这个术语,除了上面的文档之外,我几乎无法在任何地方找到对它的引用,但由于那是 Oracle 关于函数接口(interface)的正式文档,我想了解它。

    任何人都可以提供“功能形状”的定义,并发明一个例子吗?它是计算机科学中的通用术语,还是仅与 Java 8 相关?函数形状与函数描述符(例如 Predicate 接口(interface)的 (T) -> boolean )有何关系?

    更新
    下面来自 Brian Goetz 的两条评论回答了我在这篇文章中提出的问题。

    最佳答案

    就类型参数而言,函数形状基本上是其输入和输出的样子:

  • 一元函数接受一个输入并返回一个输出 [T→R]
  • 二元函数接受两个输入并返回一个输出 [(T,U)→R]
  • 三元函数接受三个输入并返回一个输出 [(T,U,V)→R]
  • 供应商(也称为空函数)不接受输入并返回一个输出 [()→R]
  • 消费者接受一个输入并且不返回任何输出 [T→()]
  • 一元谓词接受一个输入并返回一个 bool 类型的输出 [T→bool]
  • 二元谓词接受两个输入并返回一个 bool 类型的输出 [(T,U)→bool]
  • 一元运算符接受一个输入并返回一个相同类型的输出 [T→T]
  • 二元运算符接受两个相同类型的输入并返回一个相同类型的输出 [(T,T)→T]

  • 还有许多其他形状,但这些都是常见的。

    关于lambda - 关于 Java 8 中的功能接口(interface), "function shape"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26311820/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com