我是靠谱客的博主 刻苦睫毛膏,最近开发中收集的这篇文章主要介绍Groovy~Groovy的语法增强,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、Graph

  • Map.key:查找Map中所有键为key的值,不适用于空值
  • Map*.key:查找Map中所有键为key的值,适用于空值
  • Map.collect{it?.a}:查找Map中所有键为key的值,适用于空值
class FirstTest{
    static void main(String[] args) {
        def listOfMaps = [
                ['a':11,'b':12],
                ['a':21,'b':22]
        ]
        // GPath标记
        println listOfMaps.a
        // 扩展点符号
        println listOfMaps*.a

        listOfMaps = [
                ['a':11,'b':12],
                ['a':21,'b':22],
                null
        ]
        // 适用于空值
        println listOfMaps*.a
        // 等价符号
        println listOfMaps.collect{it?.a}
        // 但这只会收集非空值
        println listOfMaps.a
    }
}

二、扩展运算符

扩展运算符可以用于将集合"内联"到另一个集合中

class FirstTest{
    static void main(String[] args) {
        println ([
                'z':900,
                *:['a':100,'b':200],
                'a':300
        ])
        // 在map定义中的扩展map符号
        println([
                [*:[3:3,*:[5:5]],7:7]
        ])

        def f = {[1:'u',2:'v',3:'w']}
        println([*:f(),10:'zz'])
        // 函数参数中的扩展map符号
        f = {map -> map.c}
        println (f(*:['a':10,'b':20,'c':30],'e':50))

        f = {m,i,j,k -> [m,i,j,k]}
        // 使用具有混合为命名和命名参数的展开map符号
        println (f('e':100,*[4,5],*:['a':10,'b':20,'c':30],6))
    }
}

三、星号*运算符

*运算符是一个快捷运算符,允许您对集合的所有元素调用方法或属性

class FirstTest{
    static class Person{
        String name
        int age
    }

    static void main(String[] args) {
        println (['a','few','words']*.size())
        
        def persons = [new Person(name:'Hugo',age:17),new Person(name:'Sandra',age:19)]
        println (persons*.age)
    }
}

四、使用下标运算符切片

可以使用下标表达式将其索引到list,数组和map中。字符串在这种情况下被视为特殊类型的集合

class FirstTest{
    static void main(String[] args) {
        def text = 'nice cheese gromit!'
        def x = text[2]

        println x
        println x.class

        def sub = text[5..10]
        println sub

        def list = [10,11,12,13]
        def answer = list[2,3]
        println answer
    }
}

可以使用Range提取集合的一部分

class FirstTest{
    static void main(String[] args) {
        def list = 100..200
        def sub = list[1,3,20..25,33]
        println sub
    }
}

下标运算符可用于更新现有集合(对于不可变的集合类型)

class FirstTest{
    static void main(String[] args) {
        def list = ['a','x','x','d']
        list[1..2] = ['b','c']
        println list
    }
}

可以使用负索引,从集合的末尾更容易提取,可以使用负指数从List,array,String等结尾计数

class FirstTest{
    static void main(String[] args) {
        def text = 'nice cheese gromit!'
        def x = text[-1]
        println x

        def name = text[-7..-2]
        println name
    }
}

如果使用向后Range(开始索引大于结束索引),则结果将反过来

class FirstTest{
    static void main(String[] args) {
        def text = "nice cheese gromit!"
        def name = text[3..1]
        println name
    }
}

最后

以上就是刻苦睫毛膏为你收集整理的Groovy~Groovy的语法增强的全部内容,希望文章能够帮你解决Groovy~Groovy的语法增强所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部