我是靠谱客的博主 机灵唇彩,最近开发中收集的这篇文章主要介绍【Gradle学习】—— Groovy基础语法以及数据结构Groovy简单介绍总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • Groovy简单介绍
    • 基础语法
      • 数据类型
    • 数据结构
      • 容器类
    • 闭包(Closure)
      • 三个重要参数
      • 闭包中的注意点
  • 总结

从使用Android Studio开始,Gradle就是一个绕不来的话题,之前并不是很重视Gradle,一直就没有去学习,到最近的项目发现Gradle实在太强大,Gradle作为构建工具,对比于Maven、Ant来说,在依赖管理、构建生命周期、加载构建系统组件都有很大的优势。

这个后面慢慢介绍,由于Gradle的构建脚本是用Groovy,对比于Xml的优势也更加方便快捷,下面我会从Groovy开始介绍。

Groovy简单介绍

Groovy,脚本语言,我其实不想叫它脚本语言的,作为一门领域特定语言(DSL),相当有特色,首先它是运行在java虚拟机中的,说白了,就是Groovy先编译成java字节码,然后通过jvm来执行这个java类,人家虽然叫做脚本语言,可是java执行的步骤咱也一步不少。

啥环境搭建就不一一介绍了,百度一堆

基础语法

数据类型

  1. 变量

定义的方法:正常定义和def定义,正常定义和java无差,但是def定义充分体现其脚本语言的优势了

def a = 1 (a.class = Interger)
def b = 0.01 (b.class = Double)
def c = "hello" (c.class = String)

不同于java,Groovy没有基础类型只有对象类型,当然定义是可以用基础类型定义的

def x = 1
println  x.getClass().getCanonicalName()

//输出结果:java.lang.Integer
  1. 字符串

String
‘’’ ‘’’ 三个单引号 直接定义有格式的字符串

GString 可扩展字符串
“The sum of 2 and 3 equals ${2 + 3}” 输出结果也为The sum of 2 and 3 equals 5,类型为org.codehaus.groovy.runtime.GStringImpl

GString和 String 可以相互转换

  1. switch case

灵活 判断起来 更方便 不仅可以判断数值还可以判断类型

  1. for循环

for(i in 0…9)

对于map的循环也不需要迭代器, 直接循环取值

数据结构

容器类

  1. List
变量定义:List变量由[]定义,比如
def aList = [5,'string',true] //List由[]定义,其元素可以是任何对象
变量存取:可以直接通过索引存取,而且不用担心索引越界。如果索引超过当前链表长度,List会自动
往该索引添加元素
assert aList[1] == 'string'
assert aList[5] == null //第6个元素为空
aList[100] = 100 //设置第101个元素的值为10
assert aList[100] == 100
那么,aList到现在为止有多少个元素呢?
println aList.size  ===>结果是101

列表排序 sort()
列表查询 find() findAll() any() every() min() max()

  1. Map
容器变量定义
变量定义:Map变量由[:]定义,比如
def aMap = ['key1':'value1','key2':true]
Map由[:]定义,注意其中的冒号。冒号左边是key,右边是Value。key必须是字符串,value可以是任何对象。另外,key可以用''""包起来,也可以不用引号包起来。比如
def aNewMap = [key1:"value",key2:true]//其中的key1和key2默认被
处理成字符串"key1""key2"
不过Key要是不使用引号包起来的话,也会带来一定混淆,比如
def key1="wowo"
def aConfusedMap=[key1:"who am i?"]
aConfuseMap中的key1到底是"key1"还是变量key1的值“wowo”?显然,答案是字符串"key1"。如果要是"wowo"的话,则aConfusedMap的定义必须设置成:
def aConfusedMap=[(key1):"who am i?"]
Map中元素的存取更加方便,它支持多种方法:
println aMap.keyName    <==这种表达方法好像key就是aMap的一个成员变量一样
println aMap['keyName'] <==这种表达方法更传统一点
aMap.anotherkey = "i am map"  <==为map添加新元素
  1. Range
Range是Groovy对List的一种拓展
def aRange = 1..5 <==Range类型的变量 由begin值+两个点+end值表示
左边这个aRange包含1,2,3,4,55个值如果不想包含最后一个元素,则
def aRangeWithoutEnd = 1..<5  <==包含1,2,3,44个元素
println aRange.from //1
println aRange.to //4

闭包(Closure)

闭包是Groovy中一种非常重要的数据类型,从结构来看就是代码块


def aClosure = {
	Stringparam1, int param2 ->  
	println"this is code" 
}

参数 -> 左边为参数 右边为代码块 可以使用${}引用代码块

三个重要参数

  1. this:代表闭包定义处的类
  2. owner:代表闭包定义处的类或者对象
  3. delegate:代表任意对象 (默认owner一致)

闭包中的注意点

省略圆括号

task printX{
    doLast{
        println "dolast" 
    }
    def x = 1
    println  x.getClass().getCanonicalName()
}

其实省略的就是

 doLast({
  //....
  })

只要函数的参数为closure,它的()就可以省略

总结

其实在日常使用的过程中,你不可能知道groovy所有api的使用,只有多翻翻它的api,使用起来才会更加随心所欲,为所欲为 - -!!!

总之,Groovy也是一门语言,需要花精力去深入,因为我们使用的范围是Gradle,所以用得到的也只是一部分,再深入学习收益就不是很大了,当然也根据个人情况考虑。

Groovy API文档

后面就开始学习Gradle,对于Gradle,从Android的角度看,它就是一个工具,学会配置脚本也就差不多了,但是如果你把它做为一个编程框架来学习,那你就需要更加深入的内容了。

最后

以上就是机灵唇彩为你收集整理的【Gradle学习】—— Groovy基础语法以及数据结构Groovy简单介绍总结的全部内容,希望文章能够帮你解决【Gradle学习】—— Groovy基础语法以及数据结构Groovy简单介绍总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部