Groovy - 操作符之 “<<”
发布日期:2021-06-30 23:26:18 浏览次数:3 分类:技术文章

本文共 1843 字,大约阅读时间需要 6 分钟。

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

 

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

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

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

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

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

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

def set = ['a','b','c'] as Set      set.each{	println it} println'-------------------------'set<<'i'set<<'j'set<<'b'      set.each{	println it}

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

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

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

 

二、对StringBuffer对象的操作

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

StringBuffer sb = new StringBuffer()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方法进行简化的:

def sb = new StringBuffer()sb<<'I'sb<<' can say'sb<<' my a'sb<<'b'sb<<'c'println sb.toString()

打印结果为:

I can say my abc

 

三、对流对象的操作

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

try{	OutputStreamWriter wtr= new OutputStreamWriter(new FileOutputStream("TheOutput.txt"));	wtr.write("abc");	wtr.close();}catch(Exception e){	e.printStackTrace();}

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

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

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

 

四、其他

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

class Empl {	String name	staticvoid main(args) {		Empl.metaClass.nameInUpperCase << {-> delegate.name.toUpperCase() }		def b = new Empl(name:"Tom")		println b.nameInUpperCase()	} }

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

Empl.metaClass.nameInUpperCase = {-> delegate.name.toUpperCase()}

转载地址:https://lux-sun.blog.csdn.net/article/details/106181607 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:测试 - 冒烟测试
下一篇:网络基础 - URL & URI 区别

发表评论

最新留言

很好
[***.229.124.182]2024年04月11日 21时38分47秒