Groovy探索之闭包 四
def
static
cal(
int
x,
int
y)
{
return
x**y
}
现在,我们要对如下的数组做平方运算:
int
[] nums = [
1
,
2
,
3
,
6
,
8
]
as
int
[]
def
static
sqr(
int
x)
{
cal(x,
2
)
}
则上述的数组可以做如下的运算:
nums.
each
{
println
sqr(it)
}
这段代码再往下,我们要对下面的数组做立方运算:
int
[] num1s = [
1
,
5
,
4
,
7
]
as
int
[]
def
static
cube(
int
x)
{
cal(x,
3
)
}
def
static
cal = {
int
x,
int
y ->
y**x
}
而客户端在使用这个闭包,就成了下面的样子:
def
sqr = cal.curry(
2
)
int
[] nums = [
1
,
8
]
as
int
[]
nums.
each
{
println
sqr(it)
}
println
'--------------------------'
def
cube = cal.curry(
3
)
int
[] num1s = [
1
,
7
]
as
int
[]
num1s.
each
{
println
cube(it)
}
上面的代码的运行结果为:
1
4
9
36
64
--------------------------
1
125
64
216
343
当然可以,我们还是来看看实际的例子吧。
下面是我们的java类:
public
class
Tools {
public
static
int
cal(
int
x,
int
y)
{
return
(
int
)Math.pow(x,y);
}
}
现在我们在Groovy语言中使用它:
def
cal = Tools.&cal;
def
sqr = cal.curry(
2
)
int
[] nums = [
1
,
8
]
as
int
[]
nums.
each
{
println
sqr(it)
}
println
'--------------------------'
def
cube = cal.curry(
3
)
int
[] num1s = [
1
,
7
]
as
int
[]
num1s.
each
{
println
cube(it)
}
def
cal = Tools.&cal;
然后,我们就可以对
cal
对象进行闭包的任何操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。