Spread Operator(展开运算符)
一个集合使用展开运算符(*.)可以得到一个元素为原集合各个元素执行后面指定方法所得值的集合
class Person{
String name
int age
String toString(){
return "${name}:${age}"
}
}
def people = [new Person(name:'阿大',age:24),new Person(name:'阿二',age:18)]
println people*.toString()
========================
result:
["阿大:24", "阿二:18"]
Elvis Operator(二元运算符)
由于Groovy中“非空即真”,所以原java中的三元运算符可以简化为二元运算符
String name= person.name?person.name:'unknown'// java的写法
def name2= person.name ?: "unknown" // Groovy 的写法
Safe Navigation/Dereference Operator(安全占位符)
安全占位符(?.)主要用于避免空指针异常
Person user
println user.name// Throws NullPointerException
// 为避免空指针异常,需要加上一个检查,java的写法如下
if (user != null) {
println "Java FirstName = ${user.firstName}"
}
// Groovy语法的写法
println "Groovy FirstName = ${user?.firstName}"
Field Operator
查了词典field operator翻译为“场算符”,就中文来讲我不好理解。所以就不翻译了。
由于Groovy自动的支持属性的getter,但有时候应某种特定的需求,需要自动写一个特殊的getter,如果有时候需要调用特殊的getter,有
时候又想调用普通POJO那样的getter,那么怎么办呢?使用Groovy的Field Operator就可以轻松的解决这个问题。实例如下:
class Todo {
String name
def getName() {
println "Getting Name"
name
}
}
def todo = new Todo(name: "Jim")
println todo.name
println todo.@name
========
result:
Getting Name
Jim
Jim
不使用Field Operator调的是写的getter
使用Field Operator调的是POJO的getter
Method Closure Operator
我们知道闭包可以被作为一个方法的参数,但是怎么让一个方法作为一个方法的参数呢?Method Closure Operator就是用来解决上述问题的,它允许将一个方法当成一个闭包作为另一个方法的参数。
def list = ['老大','老二','老三']
//常规的遍历
list.each{
println it
}
String printName(name){
println name
}
//将printName作为参数进行遍历
list.each(this.&printName)
分享到:
相关推荐
本篇教程是关于Groovy编程语言中布尔(Boolean)类型的详细讲解,其中涉及到布尔类型的定义、使用以及Groovy对于布尔值操作的特殊规则。 首先,布尔类型是编程语言中一种基础的数据类型,用于表示逻辑上的真值,...
在Groovy编程语言中,Map是一种非常重要的数据结构,它用于存储键值对。在本篇博客中,我们将深入探讨Groovy中Map的基本操作,特别是通过标题和描述中给出的例子。 首先,创建一个Map非常简单。例如,`def map = [a...
教程还会讲解条件运算符的真值表,以及如何在Groovy中使用。 20. **递增和递减运算符**:这些运算符用于对变量的值进行递增或递减操作。 以上只是该教程中可能包含的一些基础知识点,每个知识点的深入讲解和示例...
闭包是Groovy最强大的特性之一,它是一种特殊的函数,可以访问定义时所在作用域的变量。闭包使得Groovy能够轻松地处理迭代、资源管理等任务,并且提供了诸如`each`, `collect`, `find`等方法,极大地提高了代码的...
在Groovy中,正则表达式是通过`~`运算符或者使用斜杠(`/`)来定义的。这种特性使得Groovy在处理文本模式匹配时更加简洁和灵活。 1. **Groovy正则表达式定义** - 使用`~`运算符:`def reg1 = ~'he*llo'`,这里的`reg...
8. **类别(Category)**:类别是一种特殊类型的闭包,可以临时添加到任何类的方法。这对于增加类的功能或实现函数式编程风格非常有用。 9. **GDK(Groovy Development Kit)**:GDK是Groovy提供的扩展API,包含...
这可能是Groovy中一种特殊的字符串表示方式,具体情况文档中未详细说明。 13. **字符** 文档未详细描述字符(Character)在Groovy中的特殊用法,但考虑到Groovy与Java的兼容性,字符处理应该与Java基本一致,但...
Groovy是一种基于Java平台的动态脚本语言,它以其简洁的语法、强大的功能以及与Java的无缝集成而受到开发者喜爱。以下是对Groovy学习笔记各章节的详细解释: ### 第1章:数字和字符串 在Groovy中,所有的数字都是...
在Groovy中,`null`是一个特殊的值,表示变量没有被赋值或者对象不存在。在进行比较操作时,`null`与其他任何值的比较都需要特别注意,因为它会引发`NullPointerException`。 在Groovy中,`null`与数字进行比较时,...
在Groovy中,可以使用`=~`运算符来测试一个字符串是否符合某个正则表达式的模式。例如: ```groovy def text = "Hello, World!" def pattern = ~/World/i // i 表示不区分大小写 def matchResult = text =~ pattern...
- **一些新的操作符**:介绍Groovy中的一些特殊操作符,如范围操作符、三元运算符等。 **2.2 探索类型** - **基础类型**:讲解Groovy中的基本数据类型,包括数字类型、字符串类型等。 - **列表、映射和范围的语法...
使用Springboot + Mongodb + Groovy + Es等框架搭建的轻量级实时风控引擎,适用于反欺诈应用场景,极简的配置,真正做到了开箱即用。 * 实时风控,特殊场景可以做到100ms内响应 * 可视化规则编辑器,丰富的运算符...
一种基于Java语言,使用Springboot + Mongodb + Groovy + Es等框架构建的轻量级实时风控引擎,适用于反欺诈应用场景,极简的配置,真正做到了开箱即用。通过学习本项目能快速了解风险的定义,更加细化风险,最后达到...
JavaScript的数据类型包括五种基本类型(原始类型):undefined、null、number、string和boolean,以及两种引用类型:object和function。JavaScript是弱类型语言,变量声明时不需要指定数据类型,可以存储任意类型的...
- **参与注入**:介绍了一种特殊的依赖注入方式,用于处理命令对象中的依赖关系。 **7.5 运用图像** - **处理文件上传**:讲解了如何处理用户上传的图片文件。 - **上传到文件系统**:介绍了如何将文件保存到文件...
4.12 默认表达式(Elvis operator):类似Groovy语言中的安全导航操作符。 4.13 哑操作符号:用于生成不会被转义的输出。 4.14 预处理:在最终渲染之前处理模板内容。 4.15 数据类型转换与格式化:允许在模板中转换...
Groovy是一种灵活的脚本语言,也可以用作JasperReports中的表达式语言。 #### 3.8 使用JavaScript作为表达式语言 JavaScript是另一种可用的表达式语言,特别适用于前端开发人员。 #### 3.9 在iReport中使用...
1. **动态类型语言支持**:Java 7引入了“ invokedynamic ”字节码指令,为动态类型语言如Groovy、JRuby等提供了更好的支持。 2. **多租户区域(Applets)**:在JDK7中,Java浏览器插件(Applets)可以运行在多租户...