Gradle:1.groove导语

groovy:

  1. 基于JVM敏捷语言;
  2. 与Java完美结合,可以使用Java所有类库;
  3. 语法上支持动态类型def,闭包
  4. 更敏捷,语法糖很多
  5. 可编程,可脚本
//动态类型 随时切换
def p = 123
p = "blade"
p = 12.5
p = [3, 6, "hello"]
//但是建议自己使用的变量定义弱类型def,对外使用要强类型


//强大到可怕case任意类型。有了它,if else 嵌套不可能的。
def a = 16.8
def result = "default"
switch (a) {
    case "price":
        result = "String"
        break
    case 10..15: //范围
        result = "range"
        break
    case Integer:
        result = "Integer"
        break
    case [-7, 1403, 16.8, "hello", 5.0f]:
        result = "list"
        break
    default:
        break
}
println result // 打印结果:list

//对范围循环
def sum = 0
for (i in 0..9) {
    sum += i
}
println "range sum = ${sum}" //打印结果:range sum = 45

//list的循环,别惊讶[]像数组 就是list
sum = 0
for (i in [3, 5, 1, 6, -8, 11]) {
    sum += i
}
println "list sum = ${sum}" //打印结果:list sum = 18

//对Map循环,不需要迭代器
for (i in ["apple": 5.8, "banana": 3.5, "pear": 2.3, "orange": 4.6]) {
    println "${i.key}'s price : ${i.value}"
}

//闭包基本概念:
def closurer = { println 'hello 闭包' }//定义
//调用 非常类似于方法
closurer()// 或者closer.call()
//有参数的闭包:
def closer2 = { String name, int age -> println "姓名:${name},今年${age}岁" }
closer2("法外狂徒张三", 23)
// 默认参数it
def close3 = { println "匹配${it}个投递职位" }
close3(48)
//闭包一定有返回值,显示声明return的数据类型,或者 无声明就返回null

//闭包基本使用: 1.基本数据类型,2.String,3.数据结构,4.文件
//例如:求阶乘 downto()和upto()
def fab(int count) {
    def r1 = 1
    count.downto(1, { num -> r1 *= num })
    println "downto result ${r1}"

    def r2 = 1
    //闭包为最后一个参数时,既可以圆括号内 也可以圆括号外,习惯放在()外
    r2.upto(count) { num -> r2 *= num }
    println "upto result ${r2}"
    //如何知道闭包参数个数和类型(如:num),要点进去看源码
}

int x = 5
fab(x)//打印结果:downto result 120  upto result 120

int cal(int number) {
    int result = 0
    //times 只有一个参数,就是闭包,这是groovy最常见的使用方式
    number.times {
        temp -> result += temp
    }
    return result
}

println cal(100)//0开始表示0~9910哦数据的求和,不含100

/**
 * 字符串与闭包
 */
String str = "the 2 and 3 is 5"
//each遍历,each 返回值是调用者本身
str.each {
        //定义闭包体
    String temp -> print temp.multiply(2)
}
//打印结果:tthhee  22  aanndd  33  iiss  55

println "----------------------"
//find 查找第一个符合条件的值,闭包体必须 是boolean返回值
def r3 = str.find {
    String s -> s.isInteger()
}
println r3 //2

//findAll返回Collection
def list = str.findAll {
    String s -> s.isNumber()
}
println list.toListString() //[2, 3, 5]

//any 返回值boolean,只要包含一个符合条件 就返回,类似 ||
str.any { String s -> s.isNumber() }
//every 返回值boolean  全部满足才返回true,类似&&
str.every { String s -> s.isNumber() }

//collect
def list2 = str.collect { it.toUpperCase() }
println list2.toListString()//[T, H, E,  , 2,  , A, N, D,  , 3,  , I, S,  , 5]


//闭包 关键变量 this owner delegate 开发中并不常用

如何在Android Studio上运行Groovy工程:https://blog.csdn.net/Gdeer/article/details/83062523

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值