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