加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy Tip 7 “<<”操作符

发布时间:2020-12-14 17:00:13 所属栏目:大数据 来源:网络整理
导读:????????????????????????? Groovy Tip 7 “”操作符 ? “”操作符在Java语言里被我们熟知的是位运算中的左移运算符。在Groovy语言里,它依然是左移运算符,这我们都很熟悉,在这里就不再多说。而我们要说的却是除此之外,在Groovy语言里为“”运算符新增的
????????????????????????? Groovy Tip 7 “<<”操作符
?
“<<”操作符在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 方法,带来了编码方面的简单和快捷。上面代码的输出结果为:
a
b
c
-----------------------
a
b
c
e
f
haha
?
除了 List 对象外,“ << ”操作符同样能够 Set 对象提供 add 功能,请看下面的例子:
?????? def set = [ 'a' , 'c' ] as Set
??????
?????? set. each {
?????????? println it
?????? }
?
?????? println '-------------------------'
?????? set<< 'i'
?????? set<< 'j'
?????? set<< 'b'
??????
?????? set. each {
?????????? println it
??? }
?
为Set对象add元素同样简单,下面是它的输出结果:
a
c
b
-------------------------
i
a
c
j
b
?
为了验证 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
?
? static void 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() }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读