groovy入门4 闭包简介
来源:互联网 发布:淘宝卡哪个好 编辑:程序博客网 时间:2024/05/23 14:33
1 闭包
闭包是一个代码块,用{}括起来。与java不同的是,groovy中程序代码也成为一种数据,可以被一个变量所引用。
javascript中var f = function(){}
格式为
{ 参数->
代码
}
具体例子如下:
def clouser1 = {
println it //it默认参数
}
clouser1.call('zhang')
def closer2 = {
text ->
println text //一个参数
}
closer2('this is close2')
def closer3 = {
//多个参数
name,age->
println "This is ${name},${age} yeas old"
}
closer3('zhangsan',20)
额外说明:groovy的这种将代码块赋值给变量的做法和javascript也有像,不过javascript的写法是var f = function(){}
2 delegate
其实delegate和java中的上下文类似,delegate将指定待执行代码的对象。类似于java中
的代码:
interface Target{
void surf();
}
class Aoo implments Target{
public void surf(){
System.out.println("Aoo surfing");
}
}
class Boo implemets Target{
public void surf(){
System.out.println("Aoo surfing");
}
private Target target;
public Boo(){}
public Boo(Target target){
this.target = target;
}
public void invoke(){
target.surf();
}
}groovy的delegate属性:
class Net{
def work = {
println 'Net is working'
}
def surf={
println 'Net is surfing'
}
}
class AdaptNet{
def work = {
println 'AdaptNet is working'
}
def surf ={
println 'AdaptNet is surfing'
}
def invoke(closer){
closer.delegate = new Net()
// closer.delegate = new AdaptNet()// close.surf将输出"AdaptNet is surfing"
closer.surf()//将输出'Net is surfing
work()
}
}
new AdaptNet().invoke{}
3闭包访问集合
def array =[1,2,3,4,5]
array.each{
print it+' '
}
def maps = [name:'s1',age:10,score:85]
maps.each{
data->
print data.key+':'+data.value+' '
}
0 0
- groovy入门4 闭包简介
- Groovy入门-闭包
- Groovy闭包
- Groovy 中的闭包
- groovy 闭包
- Groovy 闭包
- Groovy的闭包
- groovy 闭包
- Groovy闭包理解
- Groovy的闭包
- Groovy闭包笔记
- Groovy的闭包
- Groovy的闭包
- Groovy闭包学习
- groovy闭包
- Groovy 闭包
- Groovy 闭包
- Groovy闭包简述
- 极光推送Java SDK源码学习
- Asp.net WebAPI 单元测试
- 码农小汪剑指Offer之42-翻转单词顺序列
- ubuntu14.04安装subversion1.8相关问题
- socket 头文件
- groovy入门4 闭包简介
- preface
- LeetCode *** 208. Implement Trie (Prefix Tree) (给指针数组赋空间)
- Linux系统下文件的复制和移动命令
- android学习第一天:测试
- 练习二1001
- 2016SDAU编程练习二1024
- C和C++的读入方式对比
- 下蹲运动的好处与练习方式