"lamda 运算符有什么问题?-6ren"> "lamda 运算符有什么问题?-我写了这样的 JavaFX 摆弄: MenuItem menuItem1 = new MenuItem("Item 1") menuItem1.setOnAction(e -> { -6ren">
gpt4 book ai didi

java - 在 Groovy 中编码时, "->"lamda 运算符有什么问题?

转载 作者:行者123 更新时间:2023-11-30 01:57:30 25 4
gpt4 key购买 nike

我写了这样的 JavaFX 摆弄:

    MenuItem menuItem1 = new MenuItem("Item 1")
menuItem1.setOnAction(e -> {
println "Menu Item 1 Selected"
})

这会在 Eclipse 中出现错误:“Groovy:expecting ')'found '->'”

    MenuItem menuItem1 = new MenuItem("Item 1")
menuItem1.setOnAction({ e ->
println "Menu Item 1 Selected $e"
})

这很好用。就像这样:

    menuItem1.onAction = { e ->
println "Menu Item 1 Selected $e"
}

第一种方法是在 Java8+ 中执行此操作的方法。为什么 Groovy 说这是非法的,上述两种/三种方式在变量 e 的使用或范围方面有什么区别吗?

最佳答案

这只是 Java 和 Groovy 之间的区别。 Groovy 基本上从一开始就有闭包 - Java 在 JDK8 中添加了 lambda。

来自docs :

Java 8 supports lambdas and method references:

Runnable run = () -> System.out.println("Run");
list.forEach(System.out::println);

Java 8 lambdas can be more or less considered as anonymous inner classes. Groovy doesn’t support that syntax, but has closures instead:

Runnable run = { println 'run' }
list.each { println it } // or list.each(this.&println)

关于java - 在 Groovy 中编码时, "->"lamda 运算符有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53889507/

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