Groovy笔记(二)闭包
发布时间:2020-12-14 16:44:07 所属栏目:大数据 来源:网络整理
导读:闭包应用模式: 1.策略模式: def function (Closure clo) {for (i in 1..n) {clo(i)}}function { i-println i**2}function { i-println i**3} 2.闭包参数: def closure = {Date d,String str- //TODO}closure new Date(),"String" 3.模板方法模式: class Reso
闭包应用模式: 1.策略模式: def function (Closure clo) { for (i in 1..n) { clo(i) } } function { i-> println i**2 } function { i-> println i**3 } 2.闭包参数: def closure = {Date d,String str-> //TODO} closure new Date(),"String" 3.模板方法模式: class Resouces { def open() {} def write() {} def read() {} def close() {} def static use(Resources r,Closure clo) { try { r.open() clo(r) r.close() } catch(ex) {} } } def res = new Resources() Resources.use {r,{r->r.write()}} Resources.use {r,{r->r.read()}} 4.闭包参数 Closure.maximumNumberOfParameters 表示参数个数 Closure.parameterTypes 表示闭包参数类型 5.闭包参数 owner:代表闭包的外层包如果没有,就是闭包本身 this:永远指向闭包最外层的类 delegate:闭包委托类 6.闭包调用 a.closure() b.closure.call() 7.闭包在集合类中的应用 any(Closure):判断是否存在 every(Closure):判断是否每个都是 collect(Closure):遍历整个集合,通过Closure里面的算法替换集合里的元素
<span style="font-family:Helvetica Neue;">def result = [1,2,3,4].collect { i->i**2 } println result // [1,4,9,16]</span> 8.闭包作为返回值 def multiply(x) { return {y->return x*y} } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |