Groovy基本语法看懂gradle

package danxx.demo

import groovy.json.JsonOutput
import groovy.json.JsonSlurper

//https://blog.csdn.net/zhaoyanjun6/article/details/70313790
//
//
println("hello world")

/**对应java中的int**/
def a = 123
/**java中的String**/
def  aStr = "Hello World!"
/**double类型**/
def  d = 1.2

println( aStr )
println aStr


/**无参函数**/
def fun1(){

}

/**有参函数**/
def  fun2(arg1, agr2){

}

String fun3(){
    return "返回值"
}

println(fun3())

def getSomething(){
    "getSomething return value" //如果这是最后一行代码,则返回类型为String
    1000  //如果这是最后一行代码,则返回类型为Integer
}

/**灵活强大的for循环*/
for (i = 0; i < 5 ; i++) {
    println("测试 "+i)
}

for (i in 0..5){
    println("hello world for "+i)
}

for (i in 0..<5){
    println("hello for "+i)
}

4.times {
    println it
}

def temp = 10
/**三目运算符**/
def temp_1 = temp > 20 ? temp : 15

println(temp_1)

/**很类似java中的try catch**/
try{
    println 5 / 0
}catch(Exception e){
    e.printStackTrace()
}

def age = 28

def rate

/**比java的switch更强大**/
switch (age){
    case 10..26:
        rate = 0.02
        break
    case 27..35:
        rate = 0.09
        break
    case 36..48:
        rate = 0.12
        break
    case 49..100:
        rate = 0.22
        break
    default:
        throw new IllegalArgumentException()
}

println("rate : "+rate)


/**asType 类型转换**/
def s1 = "123"
//String 转成 int
s2 = s1 as int
//String 转成 int
s3 = s1.asType(Integer)

/**groovy强大的的List集合容器**/
def tempStr = "dddd"
def aList = [12,"好的","这是很强大的$tempStr","list",2.22]
println(aList)
println(aList[2])
/**groovy强大的的Map集合容器**/
def map = [key1: "value1", key2: "value2", key3: "value3"]
//打印所有的key
println(map.keySet())
//打印所有的value
println(map.values())
println("key1的值 : " + map.get("key1"))
println("key2的值 : " + map.get("key2"))

//判断map是否包含某个key
map.containsKey("key1")
//判断map是否包含某个values
map.containsValue("values1")
//清除map里面的内容
map.clear()
//把 map 的key值转换为 set
Set set = map.keySet()

/**Range 是 Groovy 对 List 的一种拓展*/
def range = 1..5
println(range)
//[1, 2, 3, 4, 5]
range.size()  //长度
range.iterator() //迭代器
def s11 = range.get(1) //获取标号为1的元素
range.contains( 5) //是否包含元素5
range.last() //最后一个元素
println("第一个数据: "+range.from) //第一个数据
//第一个数据: 1
println("最后一个数据: "+range.to)   //最后一个数据
//最后一个数据: 5


/**闭包,英文叫Closure,是Groovy中非常重要的一个数据类型或者说一种概念了。闭包,是一种数据类型,它代表了一段可执行的代码。*/
def aClosure = {//闭包是一段代码,所以需要用花括号括起来..
    String param1, int param2 ->  //这个箭头很关键。箭头前面是参数定义,箭头后面是代码
    println"this is code" //这是代码,最后一句是返回值,
    println(param1)
    println(param2)
    //也可以使用return,和Groovy中普通函数一样
}

/**闭包格式*/
//def xxx = {paramters -> code}
//或者
//def xxx = {无参数,纯code}

//调用闭包
aClosure.call("非常nice的闭包", 123)
aClosure("非常nice的闭包调用方式2", 233)


/**闭包作为函数的参数*/
def fun4(int agrs1, String args2, Closure closure){
    println(agrs1)
    println(args2)
    //调用闭包
    closure()
}

/**Groovy中,当函数的最后一个参数是闭包的话,可以省略圆括号*/
fun4(12, "调用带闭包参数的函数", {
    println(fun3())
})

/**下面是android gradle中类似的用法*/
/*providedCompile("com.danxx.lib_common:1.1.4.29@aar"){
    changing = true
    transitive=false
    exclude(module: 'module-1')
}*/

/***类转json字符串**/
Person person = new Person();
person.age = 22
person.name = "你的名字"

def jsonStr = JsonOutput.toJson(person)
println(" jsonStr : "+jsonStr)

JsonSlurper jsonSlurper = new JsonSlurper();
Person parseClass = jsonSlurper.parseText(jsonStr)

println("person name : "+parseClass.name)

/**io操作比java简单很多**/
def filePath = "/Users/dawish/log.txt"
def file = new File(filePath)
//输出文本
println file.text

//写文本
file.withPrintWriter {
    it.println("111 withPrintWriter withPrintWriter withPrintWriter")
    it.println("222 withPrintWriter withPrintWriter withPrintWriter")
}

/**断言 不满足条件时会停止向下执行**/
assert  aStr.size() > 30







    原文作者:Dawish_大D
    原文地址: https://www.jianshu.com/p/218f65d2b286
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞