相关疑难解决方法(0)

Groovy:闭包或方法

我已经养成了在任何地方使用Closures代替常规方法的习惯,即使我不需要访问自由变量.所以,我会用这个:

def addNumbers = { left, right -> left + right }

..而不是这个:

def addNumbers (left,right) { left + right }

这是不好的做法吗?我更喜欢使用闭包而不是方法时获得的额外功能,我更喜欢语法.

谢谢!

groovy closures

37
推荐指数
2
解决办法
9019
查看次数

'f(x){return x}'与'f = {x - > x}'有什么不同?

鉴于这个Groovy程序:

def f(x) { return x }

g = f

println g(42)
Run Code Online (Sandbox Code Playgroud)

将程序提供给Groovy(版本2.4.12)解释程序时,将打印一条错误消息:

groovy.lang.MissingPropertyException:没有这样的属性:f表示类:x at x.run(x.groovy:3)

但是,将程序更改为

def f = { x -> x }

g = f

println g(42)
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,使解释器打印为"42".

为什么这两种定义的f处理方式不同?有没有办法调整g前一个版本运行的定义(可能使用&.运算符)?

groovy function

3
推荐指数
1
解决办法
43
查看次数

标签 统计

groovy ×2

closures ×1

function ×1