Groovy-lang语法篇
前言: 大家现在开发Android的大部分都已经拥抱了Android Studio了,拥抱太久了就想搞点事情,我就是搞事情的哈。接下来将我的一些心得体会给大家分享一下。下面先给大家亮一下我后面写文章的知识体系图
首先学习Groovy语法
1.0 什么是Groovy
本章介绍Groovy编程语言的语法。语言的语法源自Java语法,这句话的意思也就是说你可以在Groovy里面使用Java的语法,注意这里说的是语法并不是api,也就是说声明变量,声明方法都可以跟Java一样,那么如果只是跟Java一样的话,我也不会花时间写一遍文章了,Groovy对特定构造进行了增强,并且提供了一些简化,作为一个脚本语言简化很重要
2.0 变量的声明
Groovy 语法可使用java语言发变量声明方法之后还可使用“def” 关键字声明变量
Java继承过来的方式(列举几个)
int num=10;
String nameStr="Antonio"
String name="Antonio"
float money=33.1f
boolean untypedBooleanVar = false
Groovy新增的声明方式(列举几个)
def num=10
def nameStr="Antonio"
def name='Antonio'
def money=33.1f
def valuBoolean = true
booleanField = true
2.1 变量的引用
def num=10;
println "$num"
println num
println(num)
这里的写法有三种,一种是DSL打印字符串在字符串内引用变量,一直是DSL的简化写法,另外一种是Java的写法,看上去DSL简化写法是不是更加简单呢,这个也是Groovy作为脚本语言的一大特点
3.0 集合
def arrayName = ["张三", "李四", "王小二"]
def name=arrayName[0]
值得注意的事Groovy并没有定义自己的集合而是采用了Java的集合,默认情况采用ArrayList 当然你也可以指定使用特定的集合类型,这里因为我们的目的只为了更好的学习Android-gradle-dsl,这里就不做过多的介绍了,不然一篇文章也是难以叙述完的。
3.1 集合的访问
这里的集合通过[下标]去访问,跟Java语言的数组获取一致,当然,后面我们也会讲到数组的使用,其实也是用[下标]去访问的,统一了数组跟集合的获取方式。
重点内容:
- 这里的集合下标可使用负数
def arrayName = ["张三", "李四", "王小二"]
def name=arrayName[-1]
上述代码的name的值为“王小二”,这里有人就要问为什么了,上文已经提到了Groovy语言对Java语法提供了一些特性支持,代码简化,这里就是Groovy的特性,下标可为负数,意思就是反过来取值,-1就是倒数第一个,-2就是倒数第二个,以此类推
- 这里的集合类型可以不一致
def arrayName = ["张三", 1, true]
这种声明方式在Groovy里也是没有问题的,类似swift里面的元组
4.0 数组的声明
Groovy采用了Java数组的列表表示法,但是如果使用def关键字声明的数组需强制指定数组类型。访问跟上文的集合一样
String[] names = ['Antonio', 'Yilia', 'Material']
def names = ['Antonio', 'Yilia', 'Material'] as String[]
值得注意的是这里不能采用Java声明的语法,String[] arr={“dd”,“dd”,“dd”}; 为什么呢,因为Groovy有闭包的特性,如果使用这种声明方式有可能会被编译器误解为是一个闭包,所以在Groovy里面没有这种声明方式。
5.0 字典Map的声明
这里讲到Map跟Java中的作用一致,使用键映射值,之所以我把它叫做字典是因为这种结构跟我们查字典时候的操作一致,当然还有很多语言都有这种映射的数据结构关系,这里简单描述一下。下面来一个Groovy的Map声明吧
def maps=[name:"Antonio",age:23,icon:"http://www.baidu.com/icon.png"]
det name=maps["name"]
细心的Android Studio的开发者们有没有发现这里跟我们as中的manifestPlaceholders很像,这也就是我为什么先写这一篇文章的原因,大家看完这一篇之后,我在给大家讲解android-gradle-dsl的时候大家就很容易理解了,甚至大家自己去学也是很简单的了。
总结
写这篇不是为了介绍大家都去学Groovy,学Groovy不是目的,我们的目的是让我们自己更好的学习并理解android-gradle-dsl,后面还有会gradle相关的文章出来,这一篇只是一个开始,大家喜欢我的可以关注我。
本公众号聚焦于『Android开发前沿、生活感悟、妹子图』,欢迎大家关注AntonioShare: