Spread Operator(展开运算符)
一个集合使用展开运算符(*.)可以得到一个元素为原集合各个元素执行后面指定方法所得值的集合
Groovy代码
1. class Person{
2. String name
3. int age
4. String toString(){
5. return "${name}:${age}"
6. }
7. }
8.
9. def people = [new Person(name:'阿大',age:24),new Person(name:'阿二',age:18)]
10. println people*.toString()
11.
12. ========================
13.
14. result:
15.
16. ["阿大:24", "阿二:18"]
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中的三元运算符可以简化为二元运算符
Groovy代码
1. String name= person.name?person.name:'unknown'// java的写法
2.
3. def name2= person.name ?: "unknown" // Groovy 的写法
String name= person.name?person.name:'unknown'// java的写法
def name2= person.name ?: "unknown" // Groovy 的写法
Safe Navigation/Dereference Operator(安全占位符)
安全占位符(?.)主要用于避免空指针异常
Groovy代码
1. Person user
2. println user.name// Throws NullPointerException
3. // 为避免空指针异常,需要加上一个检查,java的写法如下
4. if (user != null) {
5. println "Java FirstName = ${user.firstName}"
6.
7. }
8. // Groovy语法的写法
9. println "Groovy FirstName = ${user?.firstName}"
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就可以轻松的解决这个问题。实例如下:
Groovy代码
1. class Todo {
2. String name
3. def getName() {
4. println "Getting Name"
5. name
6. }
7. }
8.
9. def todo = new Todo(name: "Jim")
10. println todo.name
11. println todo.@name
12.
13. ========
14. result:
15. Getting Name
16. Jim
17. Jim
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就是用来解决上述问题的,它允许将一个方法当成一个闭包作为另一个方法的参数。
Groovy代码
1. def list = ['老大','老二','老三']
2. //常规的遍历
3.
4. list.each{
5. println it
6.
7. }
8.
9. String printName(name){
10. println name
11. }
12.
13. //将printName作为参数进行遍历
14. list.each(this.&printName)
分享到:
相关推荐
界面浮标 Kotlin和groovy提供了非常方便的运算符,即?. 仅在引用对象不为空时调用,但是不幸的是,java中未提供此实用程序运算符。 我写了一个来分析?.的原理?. Kotlin和Groovy中的运算符。 kotlinc和groovyc编译器...
Jenkins运算符是,用于管理Jenkins的操作。 它在构建时就牢记了不变性和声明性配置作为代码。初赛考虑到此操作符是为管理Jenkins的实例而创建的,因此重要的是要了解和都是CasC( )。 Jenkins管道使用用编写的脚本...
它扩展了以支持数据/事件序列,并添加了运算符,使您可以声明性地组成序列,同时抽象出对诸如低级线程,同步,线程安全和并发数据结构之类的问题的关注。 零依赖 <1MB的罐子 Java 6+和 2.3+ Java 8 Lambda支持...
3.1 Groovy的基本类型与运算符 21 3.1.1 字符串 21 3.1.2 数字 22 3.1.3 Groovy的类 23 3.1.4 运算符 24 3.2 Groovy的控制结构 25 3.3 Groovy的集合 27 3.3.1 列表 27 3.3.2 映射 28 3.3.3 区间 29 3.4 Groovy的闭包...
.”)或 Groovy 的运算符。 因此,您可以轻松更改此类代码: if ( ancestor ) { var child = ancestor . querySelector ( ".class" ) ; if ( child ) child . remove ( ) ; } 至 ancestor ?. querySelector ...
使用Springboot + Mongodb + Groovy + Es等框架搭建的轻量级实时风控引擎,适用于反欺诈应用场景,极简的配置,真正做到了开箱即用。 * 实时风控,特殊场景可以做到100ms内响应 * 可视化规则编辑器,丰富的运算符...
戈苏语 Gosu 是一种实用的 JVM 编程语言。 它的设计考虑到了 Java 开发人员,提供了一组... Null Safety(使用类似 Groovy 的运算符 ?. 等等) 命名参数和默认参数值 具有用户定义的间隔类型的每个语句的强大功能 F
可视化规则编辑器,丰富的运算符、计算规则灵活 支持中文,易用性更强 自定义规则引擎,更加灵活,支持复杂多变的场景 插件化的设计,快速接入其它数据能力平台 NoSQL,易扩展,高性能 配置简单,开箱即用! 项目...
树形结构和流控制运算符可以决定如何处理数据(顺序/并行),而不是将运算符放在画布上并手动连接它们。 这使得拥有数百或数千名操作员的大型工作流程可以快速开发并易于维护。 运营商包括机器学习(WEKA,MOA,...
Groovy 这样的命令式语言引入了一个空安全解引用运算符 (?. 运算符) 来安全地导航可能为空的值。 功能接口:单个抽象方法例如。 如果使用注释@FunctionalInterface 用多个方法注释一个接口,则 Runnable、Comparator...
为您提供radar实时风控引擎下载,radar是一款基于java语言,使用Springboot + Mongodb + Groovy + Es等框架搭建的轻量级实时风控引擎,适用于反欺诈应用场景,极简的配置,真正做到了开箱即用。项目特点:实时风控,...
一种基于Java语言,使用Springboot + Mongodb + Groovy + Es等框架构建的轻量级实时风控引擎,适用于反欺诈应用场景,极简的配置,真正做到了开箱即用。通过学习本项目能快速了解风险的定义,更加细化风险,最后达到...
它还允许您通过添加的运算符声明性地将序列组合在一起,同时抽象出诸如低级线程,线程安全性,并发数据结构和同步之类的问题。 RxJava通常用于运行简单的后台计算。 它支持Java 6或更高版本以及基于JVM的语言,例如...
提供Kotlin / Groovy风味的null-safe的库? Scala中的运算符。 -Scala.js静态Web项目的项目模板,其Scaladoc包含在执行的示例。 (随时在此处添加您的Scaladoc) 狗食sbt-example的文档-sbt-example自己吃狗食。 sbt...
高级Java折叠 诸如Kotlin,Groovy,Scala等现代JVM语言提供了许多语言功能,可让您以更简洁和更具表现力的方式编写代码。 这些功能包括类型推断,属性,内插字符串,范围和元组文字,增强的运算符,clojures,隐式,...
3.1 不简单的算术运算符 22 3.1.1 “+”运算符 22 3.1.2 “-”运算符 24 3.1.3 “*”运算符 25 3.1.4 “/”运算符 25 3.1.5 “%”运算符 26 3.2 自增自减运算 27 3.3 关系运算 28 3.3.1 等于/不...