Groovy闭包

news/2024/11/8 23:33:09/

本文链接:https://blog.csdn.net/feather_wch/article/details/131618022

/***===============================* 闭包* 1、闭包是什么?匿名内联函数,也称为闭包* 2、闭包是函数内部和外部的桥梁** 闭包一般不会直接使用,而是作为参数传入* 闭包具有的关键变量:*  1. this*  2. owner*  3. delegate*  4. 闭包的委托策略*=================================*/def closure={println("hello")
}
closure() // 方法1
closure.call()// 参数闭包
def closeureParam={String name, int age->println("name:$name:age:$age")
}
closeureParam.call("wch", 20)// 内置参数 it
def closureIt={println "hello it=$it"return it
}
closureIt.call("wch")
// 返回值
def result = closureIt.call("feather")
println(result)// 基本数据类型API 1.upto(n, xxx) 1~n
int n1 = fab(3)
int fab(int number){int result = 1;1.upto(number, { num-> result *= num})return result
}
println(n1)// 基本数据类型API n.downto(1, xxx) n~1
int fab2(int n){int result = 1n.downto(1){result *= it}return result
}
int n2 = fab2(5)
println(n2)// 基本数据类型API 5.times 1,2,3,4  < size(5)
int sum(int n){int result = 0n.times {result += it}return result
}
println(sum(5))// String each
String strEach = "math: 2 + 3 = 5"
strEach.each { s->if(s.isNumber())println(s)// 每个字符复重复2个s.multiply(2)
}// String find查找符合条件的第一个字符
println strEach.find{it.isNumber()
}
// String findAll 符合的所有字符
def list = strEach.findAll{it.isNumber()
}
println(list.toListString())// String any 查找是否有符合条件的字符
def resultAny = strEach.any {it.isNumber()
}
println(resultAny)// every 是否所有的字符都符合条件
def resultEvery = strEach.every {it.isNumber()
}
println(resultEvery)// collect 所有的东西都操作, 比如都转化为大写
def listCollection = strEach.collect{it.toUpperCase()
}
println(listCollection.toListString())def scriptClosure = {println(this) // 闭包定义处的类println(owner) // 闭包定义处的类或者对象println(delegate) // 任意对象,默认是owner指向的对象
}
scriptClosure.call() // 没有任何区别,在普通类或者对象中也没有任何区别// 多用于架构设计
def nestClosure = {def innerClosure = {println("innerClosure=====================")println(this) // innerClosure对象println(owner) // nestClosure对象println(delegate) // nestClosure对象}innerClosure.call()
}
nestClosure.call()HelloWorld h = new HelloWorld()
def nestClosureD = {def innerClosureD = {println("修改delegate=====================")println(this) // innerClosureD对象println(owner) // nestClosureD对象println(delegate) // HelloWorld对象}innerClosureD.delegate = h // 修改delegateinnerClosureD.call()
}
nestClosureD.call()/**** 闭包的委托策略*/
class Student{String namedef desc = {"My name is $name"}String toString(){desc.call()}
}
def student = new Student(name:"wch") // 指定参数,进行构造
println student.toString()class Teacher{String name
}
def teacher = new Teacher(name:"derry")
student.desc.delegate = teacher // 代理,是否生效取决于委托策略
student.desc.resolveStrategy = groovy.lang.Closure.DELEGATE_FIRST // 委托策略println student.toString()

http://www.ppmy.cn/news/786154.html

相关文章

Verilog设计RAM

SRAM csen_n为低&#xff0c;wren_n为高写数据。csen_n为低&#xff0c;wren_n为高读数据。csen_n为高不工作

车联网相关术语

最近加入一个车联网项目的开发&#xff0c;其中涉及到了很多专有名词&#xff0c;谨在此做记录方便日后回顾。 4G&#xff1a;第四代移动电话行动通信标准&#xff0c;指的是第四代移动通信技术。该技术包括TD-LTE和FDD-LTE两种制式。ABM&#xff1a;气囊控制器&#xff08;Ai…

中科大-凸优化 笔记(lec27)-半正定规则

全部笔记的汇总贴&#xff08;视频也有传送门&#xff09;&#xff1a;中科大-凸优化 线性规划&#xff1a;目标线性、等式约束线性、不等式约束线性 二次规划&#xff1a;目标二次&#xff08;凸&#xff09;、等式约束线性、不等式约束线性 QCQP&#xff1a;目标二次、等式…

【paper】Cam2BEV论文浅析

目录 Abstract Methodology Experrimental Setup Results and Discussion title:《A Sim2Real Deep Learning Approach for theTransformation of Images from Multiple Vehicle-Mounted Camerasto a Semantically Segmented Image in Bird’s Eye View》 Abstract 单目相…

永大服务器显示M,永大电梯故障TCD说明.doc

技 术 资 料 TCD故障码说明(UAY1,e’NT) 页 次 版 次 1.0 分类编号 STQ-0291 关 联 1/79 一、目的:供设计人员及现场调试、维修人员使用。 二、TCD 故障码一览表: 番号 内 容 表 示 Rank别 Hold TCD 10 50B ON故障 A1 ◎ TCD 11 10T ON 故障 A1 ◎ TCD 12 15B ON 故障 A1 ◎…

oracle数据备份与还原

oracle数据备份与还原 备份 exp命令用于把数据从远程数据库服务器导出至本地,生成dmp文件; imp命令用于把本地的数据库dmp文件从本地导入到远程的Oracle数据库中。 1.数据库完全导出: exp system/"123456"127.0.0.1/orcl fully fileC:/dbbak_full.dmp logC:/dbba…

31章-定时器

基本定时器TIM STM32F1 系列中&#xff0c;除了互联型的产品&#xff0c;共有8 个定时器&#xff0c;分为基本定时器&#xff0c;通用定时器和高级定时器。基本定时器TIM6 和TIM7 是一个16 位的只能向上计数的定时器&#xff0c;只能定时&#xff0c;没有外部IO。通用定时器TI…

相机内参和外参的解释

这个我觉得说清楚了&#xff0c;说相机内参包括内参矩阵和畸变矩阵&#xff0c;这样就好理解了&#xff0c;我之前把内参等同于内参矩阵了。 转载自&#xff1a;https://blog.csdn.net/weixin_42872123/article/details/110468692?utm_term%E7%9B%B8%E6%9C%BA%E7%9A%84%E5%A4…