美文网首页
Groovy语言基础

Groovy语言基础

作者: 明明_白_白 | 来源:发表于2018-09-14 11:38 被阅读9次

1.分号不是必须的
2.单引号和双引号都可以定义一个字符串常量
3.单引号没有运算能力,双引号有运算能力。双引号中调用变量的规则是一个美元符号紧跟着一对花括号,花括号里放表达式,比如{name}、{1+1}等,只有一个变量的时候可以省略花括号,如name 4.定义一个List如下: def num=[1,2,3,4,5,6] println num.getClass().name //输出可看到num类型是ArrayList println num[1] //访问第二个元素 println num[-1] //访问最后一个元素 println num[-2] //访问倒数第二个元素 println num[1..3]//访问第二道第四个元素 num.each{ //用来循环输出List中的元素,it就是正在迭代的元素 println '输出:'+it } 5.Map的用法,和List很相似,只不过它的值是一个K:V键值对,定义如下: def map1=['width':1024,'height':440] println "map的类型:"+map1.getClass().name println map1['width'] println map1.height map1.each{ println "Key:{it.key},Value:${it.value}"
}
输出:
map的类型:java.util.LinkedHashMap
1024
440
Key:width,Value:1024
Key:height,Value:440
6.方法的调用:
1.在Groovy中方法是可以省略()的,非常简洁;
2.return是可以不写的,在Groovy中,我们定义有返回值的方法时,return语句不是必须的。当没有return的时候,Groovy会把 方法执行过程中的最后一句代码作为其返回值。
3.代码块是可以作为参数传递的,代码块是一段被花括号包围的代码,Groovy是允许其作为参数传递的,从下面代码可以看 出:
//呆板的方法其实是这样
num.each({println it})
//我们格式化一下,会好看一点
num.each({
println it
)}
//Groovy规定,如果方法的最后一个参数是闭包,可以放到方法外面
num.each(){
println it
}
//然后方法的括号可以省略,就变成了我们经常看到的格式
num.each{
printl it
}
4.JavaBean:在Java中为了访问和修改JavaBean的属性,我们不得不重复生成getter/setter方法,并且使用它们,太繁琐,Groovy中得到了很大的改善:
class Person{
private String name
}

Person p=new Person()
println "名字是:"+p.name
p.name="eddy"
println "名字是:"+p.name

在没有给name赋值的时候,输出的是null,赋值后,输出的就是eddy了。
在Groovy中,并不是一定要定义成员变量才能作为类的属性访问,我们直接用getter/setter方法,也一样可以当做属性访问:
class Person{
private String name
public int getAge(){14}
}
Person p=new Person()
p.name="eddy"
println "名字是:{p.name},年龄:{p.age}"
输出: 名字是:eddy,年龄:14
通过上面的例子可以发现,我并没有定义一个age变量,但是一样可以通过p.age获取到该值,这是因为定义了getAge()方法。但是这个时候不能修改age的值,因为我们没有顶一个setter方法。
7.闭包是Groovy的一个非常重要的特征,可以说它是DSL的基础。闭包不是Groovy的首创,但是它支持这一重要特征,这就使得代码灵活、轻量、可复用,再也不用像Java一样动不动就要用一个类了。虽然Java有了匿名内部类,但还是一样冗余不灵活。
前面我们说过,闭包其实就是一个段代码块,下面我们就一步步实现自己的闭包,了解闭包的it变量的由来。集合的each方法我们已经非常熟悉了,实现一个类似的闭包功能:
task closure<<{
//使用我们自定义的闭包
customEach{println it}

}
def customEach(closure){
//模拟一个有10元素的集合,开始迭代
for(int i in 1..10){
closure(i)
}
}
上面例子我们定义了一个方法customEach,它只有一个参数,用于接收一个闭包。那么这个闭包如何执行呢?很简单,跟一堆括号就是执行了。
当闭包有一个参数时,默认就是it;当有多个参数时,it就不能表示了,我们需要把参数一一列出:

task closure<<{
//多个参数
customEach{k,v->
println "{k} is{v}"
}

}
def customEach(closure){
def map=['name':"jack","age":19]
map.each{
closure(it.key,it.value)
}
}
从例子中我们可以看到,我们为闭包传递了两个参数,一个key,另一个value,例子中k、v、->用于把闭包的参数和主题分开。
8.DSL(Domain Specific Language)的中文意思是领域特定语言,说白了就是专门关注某一领域的语言。Gradle就是一门DSL,它是基于Groovy的,专门解决自动化构建的DSL。

相关文章

  • Gradle 之 Android 中的应用

    在上一篇文章中 Gradle 之语言基础 Groovy 主要介绍了 Groovy 的基础语法(如果没有 Groov...

  • Groovy语言基础

    1.分号不是必须的2.单引号和双引号都可以定义一个字符串常量3.单引号没有运算能力,双引号有运算能力。双引号中调用...

  • Android中Gradle深入理解

    Gradle基础知识: Groovy,由于它基于Java,所以我们仅介绍Java之外的东西。了解Groovy语言是...

  • Gradle学习笔记(二)build脚本入门

    一、 Gradle使用groovy作为脚本语言,并默认导入了groovy的大部分基础包 二、project作为整个...

  • API testing - soapui

    记录在项目中对soapui的简单使用, soapui 里面脚本语言是Groovy, Groovy的基础语法可以到W...

  • Groovy基础

    <

  • 移动架构<第四篇>:Groovy基础

    Groovy是后续讲到Gradle编程时所用到的非常重要的弱类型语言。 下面贴出Groovy基础的已有链接: Gr...

  • Android之Gradle<第二篇>:Groovy基础

    下面贴出Groovy基础的已有链接: Groovy<第一篇>:Groovy 前言Groovy<第二篇>:基础语法(...

  • Hello Groovy

    Groovy 是基于JVM虚拟机的一种动态语言,语法和Java非常相似。Groovy完全兼容Java,又在此基础上...

  • Gradle 知识普及

    前言 Gradle是以 Groovy 语言为基础,基于DSL(领域特定语言)面向Java 应用的构建工具。Grad...

网友评论

      本文标题:Groovy语言基础

      本文链接:https://www.haomeiwen.com/subject/npfogftx.html