gradle

anvien 2019-06-21

groovy语法

容器类

  • Map: 其底层对应Java中的LinkedHashMap

变量定义:Map变量由[:]定义,比如

def aMap = ['key1':'value1','key2':true] 。

冒号左边是key,右边是Value。key必须是字符串,value可以是任何对象。另外,key可以用''或""包起来,也可以不用引号包起来。比如

def aNewMap = [key1:"value",key2:true]//其中的key1和key2默认被处理成字符串"key1"和"key2"
  • List: 其底层对应Java中的List接口,一般用ArrayList作为真正的实现类
    变量定义:List变量由[]定义,比如

def aList = [5,'string',true] //List由[]定义,其元素可以是任何对象
  • Range:List的一种拓展

Range类型的变量 由begin值+两个点+end值表示,下边这个aRange包含1,2,3,4,5这5个值.

def aRange = 1..5

如果不想包含最后一个元素,则:

def aRangeWithoutEnd = 1..<5  <==包含1,2,3,4这4个元素

闭包

闭包,是一种数据类型,它代表了一段可执行的代码。它们不需要名称,可以在定义之后执行。定义格式如下:

def xxx = {paramters -> code}  //或者  
def xxx = {无参数,纯code}  //这种case不需要->符号

调用方法:

闭包对象.call(参数)  //或者更像函数指针调用的方法:
闭包对象(参数)
def acoll = ["Groovy", "Java", "Ruby"]
         
acoll.each{
 println it
}

闭包中的 it 变量是一个关键字,指向被调用的外部集合的每个值 — 它是默认值,可以用传递给闭包的参数覆盖它。下面的代码执行同样的操作,但使用自己的项变量:

def acoll = ["Groovy", "Java", "Ruby"]
         
acoll.each{ value ->
 println value
}

注意:each函数调用的圆括号不见了!原来,Groovy中,当函数的最后一个参数是闭包的话,可以省略圆括号

闭包能够作为参数进行传递(Groovy 中的函数或方法不能这样做)。闭包在调用的时候才会执行.可以通过两种方法调用闭包:直接调用或者通过 call() 方法调用。

def excite = { word ->
 return "${word}!!"
}
assert "Groovy!!" == excite("Groovy")
assert "Java!!" == excite.call("Java")

groovy类

在 Groovy 中可以像在 Java 代码中一样定义类。惟一的区别是,不需要使用 public 修改符,而且还可以省略方法参数的类型.

Groovy 编译器为用 Groovy 定义的每个类都生成标准的 Java .class

groovy类初始化

Groovy 自动提供一个构造函数,构造函数接受一个名称-值对的映射,这些名称-值对与类的属性相对应。这是 Groovy 的一项开箱即用的功能 — 用于类中定义的任何属性,Groovy 允许将存储了大量值的映射传给构造函数。

相关推荐