Lambda 表达式 Parameters/declaration
Lambda Expression Parameters/declaration
报名有一段时间了,平时不报名post,除非真的找不到答案,现在感觉很卡。
我最近才开始熟悉 java Lambda 表达式(主要是函数表达式),例如 BinaryOperator 和 Bifunction..)我正在查看这些的来源,我看到你将它们声明为,例如:
public interface BiFunction<T, U, R> {...}.
所以在我看来,没有办法动态创建接口(类似于 BiFunction),但有许多参数和 'equation' 在运行时设置。
我将给出一个实际示例,我认为它可以更好地解释我想解决的问题类型:
假设我想制作一个程序,用户可以在其中输入数学函数并在一个点上对其进行计算。首先,假设它是一个单变量函数:
Function<Integer,Integer> f1 = (x) -> Math.pow(x,2);
将是问题的解决方案,除了我在运行前定义函数 f(x) = x^2 。
我想知道是否有一种方法可以在运行时创建一个函数,询问用户他们想输入哪个函数。
如果用户可以输入带有多个参数的方程式,这个问题可能会更复杂。
感谢您的帮助。
最大
你需要的是柯里化。给定一个接受参数 a
、b
和 c
的函数 f
,你可以定义一个 f
的柯里化版本,它接受参数 a
并吐出输出一个函数 g
,它接受参数 b
和 c
。继续 currying 过程,你将只需要担心 3 种情况:
- 零参数。调用函数。
- 一个参数。使用给定参数调用函数。
- 两个参数或更多。柯里化函数,并重新评估,因为柯里化函数的数量将减少。
所以如果你想使用 lambda,你需要定义一个 curries 函数的 lambda。当然,您可能还需要为运行时支持的任何代数定义相关运算符,但这可能是一个固定符号 table (并且可能同样定义为 table 的 functions/lambdas接受论证)。
报名有一段时间了,平时不报名post,除非真的找不到答案,现在感觉很卡。
我最近才开始熟悉 java Lambda 表达式(主要是函数表达式),例如 BinaryOperator 和 Bifunction..)我正在查看这些的来源,我看到你将它们声明为,例如:
public interface BiFunction<T, U, R> {...}.
所以在我看来,没有办法动态创建接口(类似于 BiFunction),但有许多参数和 'equation' 在运行时设置。
我将给出一个实际示例,我认为它可以更好地解释我想解决的问题类型:
假设我想制作一个程序,用户可以在其中输入数学函数并在一个点上对其进行计算。首先,假设它是一个单变量函数:
Function<Integer,Integer> f1 = (x) -> Math.pow(x,2);
将是问题的解决方案,除了我在运行前定义函数 f(x) = x^2 。 我想知道是否有一种方法可以在运行时创建一个函数,询问用户他们想输入哪个函数。
如果用户可以输入带有多个参数的方程式,这个问题可能会更复杂。
感谢您的帮助。
最大
你需要的是柯里化。给定一个接受参数 a
、b
和 c
的函数 f
,你可以定义一个 f
的柯里化版本,它接受参数 a
并吐出输出一个函数 g
,它接受参数 b
和 c
。继续 currying 过程,你将只需要担心 3 种情况:
- 零参数。调用函数。
- 一个参数。使用给定参数调用函数。
- 两个参数或更多。柯里化函数,并重新评估,因为柯里化函数的数量将减少。
所以如果你想使用 lambda,你需要定义一个 curries 函数的 lambda。当然,您可能还需要为运行时支持的任何代数定义相关运算符,但这可能是一个固定符号 table (并且可能同样定义为 table 的 functions/lambdas接受论证)。