gpt4 book ai didi

java - BiFunction 接口(interface)中的默认 andThen() 方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:08 25 4
gpt4 key购买 nike

有一个默认方法andThen()BiFunction接口(interface)(java.util.function 包)。

default <V> BiFunction<T,U,V> andThen(Function<? super R,? extends V> after)

文档说:

Returns a composed function that first applies this function to its input, and then applies the after function to the result. If evaluation of either function throws an exception, it is relayed to the caller of the composed function.

理解解释的含义有点困惑。根据我的理解,当默认 andThen() 时返回一个组合函数方法被调用。此组合函数在类型 T 上调用和 U返回类型 V .最后,还有 after在类型上调用的函数 RV .

这个方法有什么用?它实际上如何适合图片?

最佳答案

It's little confusing to understand what the explanation means.

为了尽可能简单地解释它,andThen 方法返回一个函数,该函数首先将给定函数应用于输入,然后将另一个函数应用于该应用程序的结果。

假设我们有两个函数 fg ,函数 f 做一些逻辑,函数 g 做一些其他类型的逻辑,所以当你编写 f.andThen(g) 时,这实际上意味着 g(f(x)) 即我们首先应用作为参数给定的函数 f(x) 然后将函数 g 应用于结果。

例子:

BiFunction<Integer, Integer, Integer> f = Math::addExact; 
Function<Integer, Integer> g = e -> e * 2;
System.out.println(f.andThen(g).apply(10,10)); // 40

我们首先调用函数f(10, 10) 然后将结果20 传递给函数g(20) 并且执行时将 20 乘以 2 因此产生 40

老实说,在 Java 中调用函数的语法并不是最好的,所以我可以理解,当有人第一次看这个时,它可能很难掌握,而且会越来越难遵循你编写的函数越多,例如在 C# 中,可以简单地执行 g(f(10, 10)) ,这显然更容易理解、阅读和理解。

What's the need of this method? How does it actually fit in the picture?

根据我的经验,我编写如上所示的函数并不常见,但我可以想象的一个典型场景是,如果你有各种实用方法来执行一些逻辑,其中一个函数的结果进一步传递给其他函数在这种情况下,您可以使用函数组合通过组合实用方法来创建各种转换管道。

关于java - BiFunction 接口(interface)中的默认 andThen() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50074620/

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