概述
一、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的语法增强所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复