Groovy - 操作符之 “<<”

简介: Groovy - 操作符之 “<<”


“<<”操作符在Java语言里被我们熟知的是位运算中的左移运算符。在Groovy语言里,它依然是左移运算符,这我们都很熟悉,在这里就不再多说。而我们要说的却是除此之外,在Groovy语言里为“<<”运算符新增的功能。

一、对List对象和Set对象的操作

对于List对象,在前面的文字里我们提到过:

deflist= ['a','b','c']
list.each{
printlnit}
println'-----------------------'list<<'e'list<<'f'list<<"haha"list.each{
printlnit}

不错,我们在Groovy语言里,使用“<<”运算符取代了Java语言中List类的add方法,带来了编码方面的简单和快捷。上面代码的输出结果为:

abc-----------------------abcefhaha

除了List对象外,“<<”操作符同样能够Set对象提供add功能,请看下面的例子:

defset= ['a','b','c'] asSetset.each{
printlnit}
println'-------------------------'set<<'i'set<<'j'set<<'b'set.each{
printlnit}

为Set对象add元素同样简单,下面是它的输出结果:

acb-------------------------iacjb

为了验证Set对象的特性,我特意给set对象多add了一个“b”字符串,最后打印的结果证明了Set对象的特性:1.没有顺序;2.没有重复的元素。

 

二、对StringBuffer对象的操作

在Java语言中,对StringBuffer对象的操作如下:

StringBuffersb=newStringBuffer()
sb.append('I can say my ')
sb.append('a')
sb.append('b')
sb.append('c')
System.out.println(sb.toString())

打印结果为:

I can say my abc

而Groovy语言中,同样是使用“<<”操作符来对append方法进行简化的:

defsb=newStringBuffer()
sb<<'I'sb<<' can say'sb<<' my a'sb<<'b'sb<<'c'printlnsb.toString()

打印结果为:

I can say my abc

 

三、对流对象的操作

在Java语言中,对流对象的操作通常是read和write,请看下面的例子:

try{
OutputStreamWriterwtr=newOutputStreamWriter(newFileOutputStream("TheOutput.txt"));
wtr.write("abc");
wtr.close();
}
catch(Exceptione)
{
e.printStackTrace();
}

而上面的例子在Groovy语言中将是下面的样子:

1. def wtr= new OutputStreamWriter(new FileOutputStream('TheOutput.txt'))
2. wtr<< 'abc'
3. wtr.close()

不错,是使用“<<”操作符代替了write方法。

四、其他

除了上面的一些对“<<”操作符的常用方法,在Groovy语言中,还有一些不常用的地方也会使用到“<<”操作符。请看下面的例子:

classEmpl {
Stringnamestaticvoidmain(args) {
Empl.metaClass.nameInUpperCase<< {->delegate.name.toUpperCase() }
defb=newEmpl(name:"Tom")
printlnb.nameInUpperCase()
    } 
}

在这里,“<<”操作符是赋值的意思,即将后面的闭包赋给Empl.metaClass.nameInUpperCase。整个语句与下面的语句等同:

Empl.metaClass.nameInUpperCase = {-> delegate.name.toUpperCase()}
目录
相关文章
|
30天前
|
人工智能 Scala Kotlin
Kotlin语法 - 运算符与中缀表达式
Kotlin语法 - 运算符与中缀表达式
|
6月前
|
Java 数据处理
Java的运算符与表达式详解
Java的运算符与表达式详解
48 1
|
6月前
|
Java 开发者
Java的三元表达式用法
Java的三元表达式用法
103 1
|
6月前
|
Java
Java一分钟之运算符与表达式初探
【5月更文挑战第7天】本文介绍了Java中的主要运算符,包括算术、比较、逻辑、位、赋值和条件运算符。讨论了类型转换、运算顺序和逻辑短路等常见问题,并提供了避免错误的建议。通过代码示例展示了运算符的使用,强调理解运算符对于编写高效Java代码的重要性。
52 0
Java一分钟之运算符与表达式初探
|
存储 机器学习/深度学习 Java
【JavaSE语法】运算符
【JavaSE语法】运算符
78 0
|
存储 Java 编译器
基本语法、数据类型与运算符【JavaSE】
基本语法、数据类型与运算符【JavaSE】
33 0
Java 运算符和表达式
Java 运算符和表达式
|
Java C++ Python
表达式求值问题(java)
表达式求值问题(java)
111 0
【Java】基础篇-运算符与表达式-自增自减
【Java】基础篇-运算符与表达式-自增自减
142 0
【Java】基础篇-运算符与表达式-自增自减