集合和闭包

因为之前没接触过C++等,对指针也一窍不通。个人不成熟的了解 闭包是一种数据类型,可以很方便的执行一段独立的代码 简化方法的调用

  1. package groovy
  2.  
  3. /**
  4. * Groovy容器
  5. */
  6. class GroovyCabin{
  7. }
  8.  
  9. /*
  10. * List 有丰富的api idea中可用listA. 查看
  11. */
  12. def listA = [5,"string","false"]
  13. print listA
  14. println listA[1]
  15. println listA.size()
  16. listA.add("moniter")
  17. println listA.size()
  18. listA[9] = 9
  19. println listA
  20. listA << 7 //在listA里添加数据 相当于listA.add(7)
  21. println listA
  22.  
  23. /*
  24. * Map
  25. */
  26.  
  27. def map = [key1:"john",key2:"tom",key3: listA]
  28. println map.keySet()
  29. println map.values()
  30. println map.get("key2") //返回key2的值
  31. map.put("key4", "company")
  32. println map
  33. //遍历
  34. Iterator it = map.iterator()
  35. while (it.hasNext()) {
  36. println it.next()
  37. }
  38. println map.containsValue("tom")
  39. println map.containsKey("key1")
  40. Set set = map.keySet() //把map的Key值转换为set
  41. println set
  42.  
  43. /*
  44. * 闭包 Clouser 闭包是一种数据类型,它代表了一段可执行的代码
  45. *
  46. def xx = {
  47. params -> code
  48. }
  49.  
  50. def xx = {
  51. code
  52. }
  53.  
  54. */
  55.  
  56. def clouserA = {
  57. String param1,int param2 ->
  58. println "this is code"
  59. return param1 + "welcome" + param2
  60. }
  61. /*
  62. * 闭包定义好后,要调用它的方法就是 闭包对象.call(参数) or 闭包对象(参数)
  63. */
  64. println clouserA.call("this is code",100)
  65. println clouserA("A",200)
  66.  
  67. def funC = {
  68. -> "abced"
  69. }
  70. println funC.call()
  71.  
  72. def list = [1,2,3] //定义一个list
  73. list.each{
  74. println it
  75. }
  76.  
  77. //当函数的最后一个参数是闭包的话,可以省略圆括号
  78.  
  79. def funD(int num,String str,Closure closure) {
  80. println num+str
  81. closure() //调用闭包
  82. }
  83.  
  84. funD(4,"test",{
  85. println "close package"
  86. })

Groovy语言学习--语法基础(2)的更多相关文章

  1. Groovy语言学习--语法基础(5)

    至此groovy语言学习-语法基础就结束了,新的工作已经安排下来,要干活了. 对groovy了解到一定程度之后就可以在java项目中对其进行引入了.为此新建了一个微型的项目,个人觉得千言万语不如代码实 ...

  2. Groovy语言学习--语法基础(1)

    2018年11月末,从上家公司离职后进入现在的公司.进入项目以来,发现项目中有很多groovy脚本,以前没接触过groovy,抽时间系统地学一下,也方便后期项目的开发和维护. groovy和java的 ...

  3. Groovy语言学习--语法基础(4)

    语法基础到此就结束了,毕竟其和Java许多地方并无差别.groovy作为脚本,是为了能更好地随业务变化调整规则,我根据自己对规则的理解 通过一张图简单描述一个groovy脚本场景:由于货币膨胀,经济收 ...

  4. Groovy语言学习--语法基础(3)

    侧重点可能是groovy metaClass基元类的概念,有点像java的反射,因为java反射目前基本也没研究过,就mark一下,后续若有用到就深入研究一下. 基础语法的东西貌似差不多八九不离十了, ...

  5. c语言学习之基础知识点介绍(三):scanf函数

    本节继续介绍c语言的基础知识点. scanf函数:用来接收用户输入的数据. 语法:scanf("格式化控制符",地址列表); 取地址要用到取地址符:&(shift+7) 例 ...

  6. oc语言学习之基础知识点介绍(五):OC进阶

    一.点语法介绍 /* 以前封装后,要给属性赋值,必须调用方法 这样做,有两个缺点: 1.代码量多,调用方法要写的东西多. 2.看起来并不像是给属性赋值,也不像取值. 我们用点语法就可以更好的解决! 点 ...

  7. oc语言学习之基础知识点介绍(四):方法的重写、多态以及self、super的介绍

    一.方法重写 /* 重写:当子类继承了父类的方法时,如果觉得父类的方法不适合,那么可以对这个方法进行重新实现,那么这个就重写. 注意:也就是说,一定只能发生在父类和子类关系中. 然后是子类重新实现父类 ...

  8. oc语言学习之基础知识点介绍(二):类和对象的进一步介绍

    一.类.对象在内存中的存储 /* 内存分区: 栈:局部变量 堆:程序员自己写代码申请开辟的 程序员自己维护,编译器现在帮我们自动优化了,它在合适的给我们加上了释放空间的语句,所以我们现在写的对象不会造 ...

  9. oc语言学习之基础知识点介绍(一):OC介绍

      一.第一个OC程序 #import <Foundation/Foundation.h> //导入头文件 int main(int argc, const char * argv[]) ...

随机推荐

  1. <自动化测试方案_5>第五章、代码单元自动化测试

    第五章.代码单元自动化测试 代码单元测试需要根据编程语言,选择单元测试框架,然后访问类方法,函数.代码单元测试做自动化,相比API.UI自动化做起来更加麻烦,建议放到待API自动化测试.UI自动化测试 ...

  2. Android--底部导航栏的动态替换方案

    1.通常来说,一般情况下,我们的app的BottomTab会有集中实现方式. 自定义view,然后自己写逻辑去实现互斥. 自由度最高,因为啥都是自己写的. 使用RadioGroup+RadioButt ...

  3. java集合继承关系图

    面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的,数组中可以存储基 ...

  4. ORACLE中Scalar subquery Caching的hash table大小测试浅析

      前阵子总结了这篇"ORACLE当中自定义函数性优化浅析"博客,里面介绍了标量子查询缓存(scalar subquery caching),如果使用标量子查询缓存,ORACLE会 ...

  5. C#-非泛型集合的方法

    非泛型集合的类和接口位于System.Collections命名空间 如:列表.队列.位数组.哈希表和字典的集合     ArrayList 动态数组 可被单独索引的对象的有序集合可以使用索引在指定的 ...

  6. mssql sqlserver 获取指定汉字的笔画数的方法分享

    转自:http://www.maomao365.com/?p=6421 摘要: 下文讲述计算汉字笔画数的sql函数分享,如下所示: 例:建立汉字笔画数sql函数 )) returns int as b ...

  7. Vue2 学习笔记5

    文中例子代码请参考github watch属性的使用 考虑一个问题:想要实现 名 和 姓 两个文本框的内容改变,则全名的文本框中的值也跟着改变:(用以前的知识如何实现???) 监听data中属性的改变 ...

  8. UITableView的分割线长短的控制

    UITableView的默认的cell的分割线左边没有顶满,而右边却顶满了.这样显示很难看.我需要让其左右两边都是未顶满状态,距离是20像素 // code1 if ([self.tableView ...

  9. UGUI ScrollRect 滑动

    运行环境 Unity3D 5.3.7 p4 在我之前的博客中,写过一些Unity4.6的UGUI,现这篇是基于Unity 5.3的 推荐结构 推荐使用三层来组织,如下所示: ScrollRect :S ...

  10. 介绍一个比较了各种浏览器对于HTML5 等标准支持程度的网站

    可以选择浏览器种类,版本,比较的功能 网站地址:https://caniuse.com/#comparison