gpt4 book ai didi

java8 将数学运算符应用于函数的可能性

转载 作者:行者123 更新时间:2023-11-30 03:08:46 24 4
gpt4 key购买 nike

假设,我有两个函数。

Function<Double, Double> function1 = (x) -> (3*x);
Function<Double, Double> function2 = (x) -> (Math.pow(x, 2));

我想将这些函数相乘。所以我想得到这个 lambda 表达式作为结果:

(x) -> (3*Math.pow(x,3));

在 Java 8 中可能吗?

最佳答案

不,您将无法使用Function来做到这一点.

假设您有 Function.multiply(other)方法,与以下两个函数执行乘法的结果是什么?

Function<String, String> f1 = s -> s.substring(1);
Function<String, Integer> f2 = s -> s.length();

但是,如果您使用 DoubleUnaryOperator 重写函数(或 Function<Double, Double> ),那么你可以得到以下内容:

DoubleUnaryOperator f1 = x -> 3*x;
DoubleUnaryOperator f2 = x -> Math.pow(x, 2);

DoubleUnaryOperator f1xf2 = x -> f1.applyAsDouble(x) * f2.applyAsDouble(x);

这里的区别在于我们知道函数的操作数是 double它返回 double .

f1xf2函数返回f1结果的乘法和f2 。因为我们知道两个操作数都是 double ,乘法可以安全地完成。

关于java8 将数学运算符应用于函数的可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34116844/

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