如何在 Java 中调用用户定义的 Lambda 函数
How to Call user-defined Lambda Function in Java
在this tutorial中,我看到了一个用户定义的lambda函数的例子。
Function<String, String> toLowerCase = (var input) -> input.toLowerCase();
我想知道如何调用这个函数?我在 jshell 中尝试过,但我做不到。我可以很好地创建函数:
有什么想法吗?
jshell> Function<String, String> toLowerCase = (var input) -> input.toLowerCase();
toLowerCase ==> $Lambda/0x00000008000b3040@3e6fa38a
但似乎无法执行它:
jshell> String hi = "UPPER";
jshell> String high;
high ==> null
jshell> toLowerCase(high,low);
| Error:
| cannot find symbol
| symbol: method toLowerCase(java.lang.String,java.lang.String)
| toLowerCase(high,low);
| ^---------^
jshell>
您需要apply
函数,例如:
toLowerCase.apply(high)
或将其值赋给另一个变量low
,如:
jshell> String low = toLowerCase.apply(high)
low ==> "ggggg"
建议:使用jshell
自动完成(在macOS上使用tab键)找出所有方法是什么适用于在声明的变量上调用。
您创建了一个 Function
functional interface, which has a method Function.apply()
类型的实例。因此,您必须像在 Java class:
中一样使用它
toLowerCase.apply(high);
toLowerCase(high,low);
中的什么让您认为 low
是什么?与 Java 一样,您必须在可用范围内使用已定义的方法和变量。
在this tutorial中,我看到了一个用户定义的lambda函数的例子。
Function<String, String> toLowerCase = (var input) -> input.toLowerCase();
我想知道如何调用这个函数?我在 jshell 中尝试过,但我做不到。我可以很好地创建函数:
有什么想法吗?
jshell> Function<String, String> toLowerCase = (var input) -> input.toLowerCase();
toLowerCase ==> $Lambda/0x00000008000b3040@3e6fa38a
但似乎无法执行它:
jshell> String hi = "UPPER";
jshell> String high;
high ==> null
jshell> toLowerCase(high,low);
| Error:
| cannot find symbol
| symbol: method toLowerCase(java.lang.String,java.lang.String)
| toLowerCase(high,low);
| ^---------^
jshell>
您需要apply
函数,例如:
toLowerCase.apply(high)
或将其值赋给另一个变量low
,如:
jshell> String low = toLowerCase.apply(high)
low ==> "ggggg"
建议:使用jshell
自动完成(在macOS上使用tab键)找出所有方法是什么适用于在声明的变量上调用。
您创建了一个 Function
functional interface, which has a method Function.apply()
类型的实例。因此,您必须像在 Java class:
toLowerCase.apply(high);
toLowerCase(high,low);
中的什么让您认为 low
是什么?与 Java 一样,您必须在可用范围内使用已定义的方法和变量。