【无标题】 以你之姓@ 2023-09-27 14:51 117阅读 0赞 3.5.1 闭包的基本技能点 **闭包的定义:** 闭包就是一段代码块,用\{\}括起来: def c = { println 'hi groovy'} ![d5c9ca50680fdffe119471473bb757a8.gif][] ![382c9138bf2b207b946369ffdf9ca9d6.gif][] \*\*闭包调用/执行: c.call() c() //类似调用方法一样 ![1195b95bf3d0ae59623bd3f217fc7ae0.gif][] ![bc8303e75ada4bbb61f51c13aedafe11.gif][] 闭包传入参数:\*\* **无参数**: // -> 前:闭包参数 -> 后:闭包体 def c = { -> println 'hi groovy'} c.call() ![4b890d821083581bd996a189e29fa3aa.gif][] ![0ac24544f091c57eabf208743ef2bc9a.gif][] **可以传入一个参数**: def c = { String str -> println "hi ${str}"} c.call('groovy') ![642b31a9c37057ee128c9f853721dccf.gif][] ![d2c653bacbd2cf35ea8cdf16bb791dd1.gif][] **可以传入多个参数**:(用逗号隔开参数即可) def c = { String str,int num -> println "hi ${str} , hi ${num}"} def num = 19 c.call('groovy',num) ![d627daf652774ac00efc7469096d8aec.gif][] ![dacd7ad5b6cb8cc32c5f74b43f904fe7.gif][] **有默认的参数:** 所有闭包都有一个默认参数,不需要你显式声明,用it接收 def c = { println "hi ${it} "} c.call('groovy') ![c6fef083059463e578c67290a91190a0.gif][] ![26ed67338f82c237d084cf3bf658e213.gif][] 如果你不想叫it,那么就需要自己手动显式将参数定义即可,一旦定义那么就没有默认参数了(隐式参数) **闭包返回值:** 闭包一定有返回值,如果不写,就相当于返回null def c = { println "hi ${it} "} def result = c.call('groovy') println result ![e28cfcc7196cef298b818def38acc3dc.gif][] ![eba7650ba57183117582c45fdebce559.gif][] 可以定义返回值: ``` def c = { return "hi ${it} "} def result = c.call('groovy') println result ``` ![e360d396e686b8821d5455905e56712b.gif][] ![d1fd19053ffade3b5577862c693e0173.gif][] 3.5.2 闭包的常见使用场景 ##### **1、与基本数据类型结合使用(for循环场景)** ##### (1)案例:从2-7进行遍历: -------\*\*upto 2.upto(7){println it} ![c7c9505429d9a1da970869eb458b7536.gif][] ![6cae62de1a9baf6a263f054c8b917285.gif][] 底层对应源码: ![5b1bcc841e4eeb5c2dcac39068588669.png][] (2)案例:1+2+3+。。。。+100 -------\*\*upto ``` //1+2+3+。。。。+100 def result = 0 1.upto(100){result += it} println result ``` ![74e6075c531e00efaf7dfcb851f7495f.gif][] ![ab8bf81b79904562cfae1fff0341fb34.gif][] (3)案例:输出7-2 -------\*\*downto 7.downto(2){println it} ![f8bef9856eb8e875aaf304b7dfb72038.gif][] ![d05b76508931e2b4546c00f256278372.gif][] (4)案例:输出100以内的数 --- **times** (从0开始遍历到指定数结束) 3.times {println it} ![Image 1][] ![f970ae5088e3acfc44ba3ebb982ff5b7.gif][] ![f480197f69762b1e2945bb20fce95a90.png][] ![ba8a2bdd3faf8ed00d7735ed910071fe.png][] (5)案例:1+2+。。。100 ----- **times** def r = 0 101.times {r += it} println r ![396523418416a335c192c52a7b897342.gif][] ![47859d3e8b65040802eafa862d59f12b.gif][] 补充:写法两种: //如果闭包是调用方法的最后一个参数,可以直接将闭包写在外面 2.upto(7){println it} //常用 2.upto(7,{println it}) //不常用 ![1c020252462376122df0f0101dac56f2.gif][] ![f5e32d2e48d394b09dd87c560dc51228.gif][] \*\*2、与字符串结合使用 package com.msb.test01 def s = "hi groovy 2023" //遍历:PS :如果闭包是方法的最后一个参数,我们可以写在外面,不用非要写到()中 println s.each {println it} //each的返回值就是字符串s本身 //找到符合条件的第一个值 println s.find {it.isNumber()} //PS :参照源码发现 !bcw.call(new Object[]{value} --》闭包返回值必须是布尔值 //找到符合条件的全部值 def list = s.findAll {it.isNumber()} println list.toListString() //判断任意一位是否满足条件 println s.any {it.isNumber()} //判断每一位是否满足条件 println s.every {it.isNumber()} //收集结果: def list2 = s.collect {it.toUpperCase()} println list2.toListString() ![d93d357e742ed3c6cf9a72b9cecfe56d.gif][] ![00a35a1f883c55a3aa252fcff202c2b3.gif][] [d5c9ca50680fdffe119471473bb757a8.gif]: https://img-blog.csdnimg.cn/img_convert/d5c9ca50680fdffe119471473bb757a8.gif [382c9138bf2b207b946369ffdf9ca9d6.gif]: https://img-blog.csdnimg.cn/img_convert/382c9138bf2b207b946369ffdf9ca9d6.gif [1195b95bf3d0ae59623bd3f217fc7ae0.gif]: https://img-blog.csdnimg.cn/img_convert/1195b95bf3d0ae59623bd3f217fc7ae0.gif [bc8303e75ada4bbb61f51c13aedafe11.gif]: https://img-blog.csdnimg.cn/img_convert/bc8303e75ada4bbb61f51c13aedafe11.gif [4b890d821083581bd996a189e29fa3aa.gif]: https://img-blog.csdnimg.cn/img_convert/4b890d821083581bd996a189e29fa3aa.gif [0ac24544f091c57eabf208743ef2bc9a.gif]: https://img-blog.csdnimg.cn/img_convert/0ac24544f091c57eabf208743ef2bc9a.gif [642b31a9c37057ee128c9f853721dccf.gif]: https://img-blog.csdnimg.cn/img_convert/642b31a9c37057ee128c9f853721dccf.gif [d2c653bacbd2cf35ea8cdf16bb791dd1.gif]: https://img-blog.csdnimg.cn/img_convert/d2c653bacbd2cf35ea8cdf16bb791dd1.gif [d627daf652774ac00efc7469096d8aec.gif]: https://img-blog.csdnimg.cn/img_convert/d627daf652774ac00efc7469096d8aec.gif [dacd7ad5b6cb8cc32c5f74b43f904fe7.gif]: https://img-blog.csdnimg.cn/img_convert/dacd7ad5b6cb8cc32c5f74b43f904fe7.gif [c6fef083059463e578c67290a91190a0.gif]: https://img-blog.csdnimg.cn/img_convert/c6fef083059463e578c67290a91190a0.gif [26ed67338f82c237d084cf3bf658e213.gif]: https://img-blog.csdnimg.cn/img_convert/26ed67338f82c237d084cf3bf658e213.gif [e28cfcc7196cef298b818def38acc3dc.gif]: https://img-blog.csdnimg.cn/img_convert/e28cfcc7196cef298b818def38acc3dc.gif [eba7650ba57183117582c45fdebce559.gif]: https://img-blog.csdnimg.cn/img_convert/eba7650ba57183117582c45fdebce559.gif [e360d396e686b8821d5455905e56712b.gif]: https://img-blog.csdnimg.cn/img_convert/e360d396e686b8821d5455905e56712b.gif [d1fd19053ffade3b5577862c693e0173.gif]: https://img-blog.csdnimg.cn/img_convert/d1fd19053ffade3b5577862c693e0173.gif [c7c9505429d9a1da970869eb458b7536.gif]: https://img-blog.csdnimg.cn/img_convert/c7c9505429d9a1da970869eb458b7536.gif [6cae62de1a9baf6a263f054c8b917285.gif]: https://img-blog.csdnimg.cn/img_convert/6cae62de1a9baf6a263f054c8b917285.gif [5b1bcc841e4eeb5c2dcac39068588669.png]: https://img-blog.csdnimg.cn/img_convert/5b1bcc841e4eeb5c2dcac39068588669.png [74e6075c531e00efaf7dfcb851f7495f.gif]: https://img-blog.csdnimg.cn/img_convert/74e6075c531e00efaf7dfcb851f7495f.gif [ab8bf81b79904562cfae1fff0341fb34.gif]: https://img-blog.csdnimg.cn/img_convert/ab8bf81b79904562cfae1fff0341fb34.gif [f8bef9856eb8e875aaf304b7dfb72038.gif]: https://img-blog.csdnimg.cn/img_convert/f8bef9856eb8e875aaf304b7dfb72038.gif [d05b76508931e2b4546c00f256278372.gif]: https://img-blog.csdnimg.cn/img_convert/d05b76508931e2b4546c00f256278372.gif [Image 1]: [f970ae5088e3acfc44ba3ebb982ff5b7.gif]: https://img-blog.csdnimg.cn/img_convert/f970ae5088e3acfc44ba3ebb982ff5b7.gif [f480197f69762b1e2945bb20fce95a90.png]: https://img-blog.csdnimg.cn/img_convert/f480197f69762b1e2945bb20fce95a90.png [ba8a2bdd3faf8ed00d7735ed910071fe.png]: https://img-blog.csdnimg.cn/img_convert/ba8a2bdd3faf8ed00d7735ed910071fe.png [396523418416a335c192c52a7b897342.gif]: https://img-blog.csdnimg.cn/img_convert/396523418416a335c192c52a7b897342.gif [47859d3e8b65040802eafa862d59f12b.gif]: https://img-blog.csdnimg.cn/img_convert/47859d3e8b65040802eafa862d59f12b.gif [1c020252462376122df0f0101dac56f2.gif]: https://img-blog.csdnimg.cn/img_convert/1c020252462376122df0f0101dac56f2.gif [f5e32d2e48d394b09dd87c560dc51228.gif]: https://img-blog.csdnimg.cn/img_convert/f5e32d2e48d394b09dd87c560dc51228.gif [d93d357e742ed3c6cf9a72b9cecfe56d.gif]: https://img-blog.csdnimg.cn/img_convert/d93d357e742ed3c6cf9a72b9cecfe56d.gif [00a35a1f883c55a3aa252fcff202c2b3.gif]: https://img-blog.csdnimg.cn/img_convert/00a35a1f883c55a3aa252fcff202c2b3.gif
相关 【无标题】 C 语言接口如何定义和继承? 在 C 语言中,接口通常通过定义结构体来实现,结构体中包含一些函数指针,这些函数指针定义了接口所需的所有函数。 下面是一个示例代码: 谁践踏了优雅/ 2024年03月26日 11:40/ 0 赞/ 73 阅读
相关 【无标题】 -------------------- springboot web项目框架结构 -------------------- SpringBoot 是一个基于 Spr 女爷i/ 2024年03月25日 20:00/ 0 赞/ 25 阅读
相关 【无标题】 大家可以回想一下,当初我们最开始学习Java的时候,搭建一个Web所需要的步骤。。。 1、配置web.xml,加载spring和spring mvc 2、配置数据库连接、配 深藏阁楼爱情的钟/ 2024年03月23日 18:43/ 0 赞/ 17 阅读
相关 【无标题】 铜三铁四已经结束了,但还是有很多Java程序员没有找到工作或者成功跳槽,跳槽成功的也只是从一个坑中,跳入另一个坑中…… ![4cf6db4c14b524cd5c2d29fdd 曾经终败给现在/ 2023年10月10日 23:52/ 0 赞/ 11 阅读
相关 【无标题】 铜三铁四已经结束了,但还是有很多Java程序员没有找到工作或者成功跳槽,跳槽成功的也只是从一个坑中,跳入另一个坑中…… ![4cf6db4c14b524cd5c2d29fdd r囧r小猫/ 2023年10月10日 23:52/ 0 赞/ 13 阅读
相关 【无标题】 铜三铁四已经结束了,但还是有很多Java程序员没有找到工作或者成功跳槽,跳槽成功的也只是从一个坑中,跳入另一个坑中…… ![4cf6db4c14b524cd5c2d29fdd 电玩女神/ 2023年10月10日 23:51/ 0 赞/ 15 阅读
相关 【无标题】 铜三铁四已经结束了,但还是有很多Java程序员没有找到工作或者成功跳槽,跳槽成功的也只是从一个坑中,跳入另一个坑中…… ![4cf6db4c14b524cd5c2d29fdd 谁践踏了优雅/ 2023年10月10日 23:51/ 0 赞/ 16 阅读
相关 【无标题】 注意事项 int 宽度是显示宽度,如果超过,可以自动增大宽度 int底层都是4个字节 时间的方式多样 '1256-12-23' "1256/12/23" "1256.12. 朴灿烈づ我的快乐病毒、/ 2023年09月27日 14:57/ 0 赞/ 113 阅读
相关 【无标题】 3.5.1 闭包的基本技能点 闭包的定义: 闭包就是一段代码块,用\{\}括起来: def c = { println 'hi groovy'} ![d5c9c 以你之姓@/ 2023年09月27日 14:51/ 0 赞/ 118 阅读
相关 【无标题】 昨晚和知识星球的一位同学 1对1 沟通,聊了很多关于团队管理、质量体系构建和个人职业发展的话题。 这位同学本身就具有多年的大厂背景,在技术实践、团队管理管理方面有丰富的经验。 待我称王封你为后i/ 2023年09月25日 19:00/ 0 赞/ 129 阅读
还没有评论,来说两句吧...