在Java8中,新的包是Java。util。函数包含很多函数接口。该软件包的文档(http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html)多次提到“函数形状”:
我以前从未听说过“函数形状”这个词,除了上面的文档之外,我几乎找不到任何地方提到它,但由于这是Oracle关于函数接口的正式文档,我想了解它。
有人能提供“函数形状”的定义并发明一个例子吗?它是计算机科学中的一个通用术语,还是只与Java8有关?函数形状如何与函数描述符(如(T)-
更新下面Brian Goetz的两条评论,回答我在本文中提出的问题。
我没有找到任何关于“函数形状”一词的官方或广泛接受的定义的参考,所以下面是我自己的解释。
“函数形状”似乎是它的“类型签名”,包括返回类型,即:
(也就是说,除了函数名、参数名和主体之外,基本上所有关于函数的信息都是如此。)我怀疑他们没有使用术语“签名”,因为它在Java中已经有了不同的含义——它不包括返回类型。于是他们发明了一个新名词。
在函数式编程语言中,“类型签名”通常包括返回类型。签名有助于理解函数的功能,因此它们通常被明确地写下来。例如,新的BiFunction
的签名(或Java术语中的“函数形状”)可以写为(T,U)-
以下是新Java函数接口的函数类型签名的几个示例:
BiFunction<T,U,R>, (T, U) -> R
BinaryOperator<T,U,R> (T, U) -> R
BiPredicate<T,U> (T, U) -> boolean
Consumer<T> T -> () note: `()` means `void`
Function<T,R> T -> R
IntFunction<R> int -> R
Predicate<T> T -> boolean
Supplier<R> () -> R
UnaryOperator<T,R> T -> R
就类型参数而言,函数形状基本上就是其输入和输出的样子:
还有许多其他形状,但那些都是常见的。
问题内容: 关于Java8 内置 功能接口,我遇到了许多问题,包括this,this和this。但是所有人都问“为什么只有一种方法?” 或“如果使用功能接口执行X,为什么会出现编译错误”等。我的问题是: 当我仍然可以在自己的接口中使用lambda时,这些新功能接口的存在目的 是 什么 ? 考虑一下oracle文档中的以下示例代码: 好的,很好,但这可以通过上面自己的示例来实现(带有单个方法的接口已
还是这些标准的功能接口(消费者、供应商、谓词、函数)是用来充当代码组织、可读性、结构、[其他]的模板?
更准确地说,函数接口定义为具有一个抽象方法的任何接口。 然后他继续介绍示例,其中一个是接口: 我能够测试是否可以使用lambda函数代替比较器参数,并且它能够工作(例如)。
我正在学习这个函数接口科目,我研究如何使用预定义的函数接口:谓词和函数。 所以我创建了几个实现: 这与简单地调用一个常规函数来完成这些任务有何不同? 是为了让lambdas使用它们吗?是否允许将它们作为方法参数传递? 我真的错过了这个技术的真正道理。
问题内容: 在此页面中,我找到了新的JavaScript函数类型: 我已经知道了什么,以及做的,但不知道什么是注定的。它是什么? 问题答案: 这是一个生成器功能。 生成器是可以退出并稍后重新输入的函数。它们的上下文(变量绑定)将在重新进入时保存。 调用生成器函数不会立即执行其主体。而是返回该函数的迭代器对象。调用迭代器的方法时,将执行生成器函数的主体,直到第一个表达式指定要从迭代器返回的值,或者使
我想出了以下几点: