美文网首页
Groovy基础

Groovy基础

作者: ztzt123 | 来源:发表于2018-03-30 20:06 被阅读0次

    字符串

    groovy与Java字符串的区别是,groovy的字符串拥有运算能力,单引号和双引号都可以定义一个字符串常量。
    单引号定义的是纯粹的字符串常量,不对字符串里的表达式做运算。
    双引号定义的字符串有运算能力。

    task printStr << {
        def name = "zhang"
        println '单引号字符串:${name}'
        println "双引号字符串:${name}"
    }
    

    单引号字符串:${name}
    双引号字符串:zhang

    $符号后面紧跟一对花括号,括号内方表达式,如${1+3},当只有一个变量的时候可以省略花括号写成$name。

    集合

    List

    创建

    def numberArrayList = [1,2,3,4,5]  
    

    注意这里是定义了一个ArrayList。那要定义一个数组呢?

    def numberArray = new int [4]
    

    如果定义一个数组,而且要赋值呢对于java是这样String[] strs = new String[]{"a","b","c","d"};但对于groovy:

    def numberArray = [1,2,3,4] as int[]
    

    访问

    groovy提供了更加方便的访问List的方式。groovy提供了下标索引的方式访问,还提供了负下标和范围索引。范围索引使用..分开

    println numberList[1]   //访问第二个元素
    println numberList[-1]   //访问最后一个元素
    println numberList[-2]   //访问倒数第二个元素
    println numberList[1..4]   //访问第二个到第五个元素
    

    输出结果:
    2
    5
    4
    [2, 3, 4, 5]

    遍历

    groovy为list提供便利的迭代操作,each方法,接受一个闭包作为参数

    numberArrayList.each {
        println it
    }
    

    it变量就是正在迭代的元素。

    Map

    map的用法和List很像,值是K:V的键值对:

    def map = [3:56, 'name':'Bruce']
    

    输出的类型是:java.util.LinkedHashMap

    map访问

    map的多种访问方式.

    map.get('name')   //Result: "Bruce" 
    def a = 'name'
    map.name    //Result: "Bruce" 
    map['name'] //Result: "Bruce" 
    map[a]      //Result: "Bruce" 
    map[3]      //Result: 56 
    

    以下访问是错误的,会抛出异常
    map[name]
    map.3

    map遍历

    map的迭代也是用each,只是迭代的元素是Map.Entry:

    map1.each {
        println "key : $it.key, value: $it.value"
    }
    

    方法

    groovy调用方法时可以省略括号,直接写成param1,param2,....的形式

    task runMethod << {
        method1(1,2)
        method1 1,2
    }
    
    def method1(int a, int b){
        println a+b
    }
    

    groovy中return可以不写,没有return的时候,会把执行的最后一句作为返回值。

    def method1(int a, int b){
    if(a > b){
    a
    }else {
    b
    }
    }

    闭包

    闭包其实就是一段代码块,闭包可以作为参数传递。

    task helloClosure << {
        custom {
            println it
        }
    }
    def custom(closure){
        for(int a in 1..5){
            closure a
        }
    }
    

    这里定义一个custom方法,他接受一个闭包作为参数,我们在helloClosure task内调用custom传入我们的闭包。当闭包只有一个参数时,默认就是It当然你也可以自己指定,->用于把闭包的参数和主体分开

    custom { y ->
        println y
    }
    

    多个参数时:

    custom { x,y ->
        println y+x
    }
    

    相关文章

      网友评论

          本文标题:Groovy基础

          本文链接:https://www.haomeiwen.com/subject/katwcftx.html