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() }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |