Groovy Tip 15 “*”操作符
来源:互联网 发布:重庆富士康java 编辑:程序博客网 时间:2024/05/20 00:37
Groovy Tip 15 “*”操作符
基于Groovy语言是一个敏捷的开发语言的观点,它在很多方面给我们提供编码的方便和高效性。“*”操作符便是其中的一个例子,它被淹没在Groovy语言的很多高效特性中,不为人轻易所知,但这却恰恰说明Groovy语言编程的敏捷性。下面,我们就来说一说“*”操作符。
先从一个简单的例子说起。
假设我们有如下的一个方法:
defstaticint sum(int i,int j,int k)
{
return i+j+k
}
现在,我们要调用这个方法。常规的调用如下:
sum(1,2,3)
通过“*”操作符,我们可以这样调用:
def list = [1,2,3]
println sum(*list)
我们再把例子复杂一点:
defstaticint cal(int i,int j,int k,list)
{
return i+j+k+list.size()
}
要调用上面的方法,我们可以:
def list = [1,2,3]
println cal(*list,[1,2,7])
由于Groovy的动态性,我们甚至可以:
def list = [1,2,3,[1,2,3]]
println cal(*list)
总之,有了“*”操作符,我们的多参数方法调用在写代码方面可以不用那么难受,可以先把所有的或部分的参数放在一个List对象里,然后把该对象传给方法。
除此之外,“*”操作符还有很多其他方面的用途,比如简化集合类的操作。下面也试图列举一些例子来说明。
我们现在有了一个List对象,如下:
def list1 = [1,2,3]
现在,我们需要一个新的List对象,它的元素部分由list1的元素组成。要实现这个目的,我们在Java语言的思路是这样的:
def list2 = []
list2.addAll(list1)
list2<<4
首先是要初始化一个新的List对象,然后使用addAll方法把list1的所有元素都赋给list2,然后再在list2中添加新的元素。
当然,在Java语言中,我们还有更简单的办法,这就是clone方法,如下:
def list2 = list1.clone()
list2<<4
首先把list1克隆一份赋给list2,然后给list2添加新的元素。
在Groovy语言中,我们使用“*”操作符,可以这样做:
def list2 = [*list1,4]
这真是太简单了。
再举出一个例子,你就更感叹于“*”操作符的简单了。
现在,我们要创建一个List对象,它的元素由1到20的数字组成。在Java语言中,我们是这样做的:
List list = new ArrayList();
for(int i=1;i<=20;i++)
{
list.add(i);
}
可以看到,十分的麻烦,需要使用for循环挨个赋值。
我们在Groovy语言中,只需要这样:
def list = [*(1..20)]
除了List对象,“*”操作符同样也可以使用于Map对象:
def map1 = ['name':'Tom',age:19]
def map2 = [*:map1,'addr':'Shenzhen']
- Groovy Tip 15 “*”操作符
- Groovy Tip 7 “<<”操作符
- Groovy Tip 17 “*.”操作符
- Groovy Tip 27 Groovy语言对一些常用操作符的扩展
- Groovy Tip 13 “.&”运算符
- Groovy Tip 10 Groovy语言对String的简化操作
- Groovy Tip 6 集合类的简化操作
- Groovy Tip 5 数组
- Groovy Tip 8 GroovyBean
- Groovy Tip 14 Assert
- Groovy Tip 28 Gpath
- Groovy Tip 5:数组
- Groovy Tip 4 对象非空判断及“?”运算符
- 使用Groovy "*“ 操作符
- Groovy Tip 30 BigDecimal数据类型
- Groovy Tip 31 Map拾遗
- Groovy Tip 35 正则表达式
- Groovy Tip 36 “in”关键字
- Java服务器端编程安全必读-Java基础-Java-编程开发
- 论全世界所有程序员都会犯的错误-Java基础-Java-编程开发
- 为Java应用程序添加退出事件响应-Java基础-Java-编程开发
- JS导航条显隐例子
- c#获取不到隐藏控件的值
- Groovy Tip 15 “*”操作符
- 如何在网页中嵌入播放器
- 回发或回调参数无效。在配置中使用或在页面中使用 <%@ Page EnableEventValidation="true" %
- c++学习之 指针和自由存储空间
- 向量、矩阵乘法的几何意义(一) scalar multiplication VS scalar product
- 关于地震预测的一个胡思乱想
- C#初学者的迷惑...求助!
- 北川邓家“刘汉小学”无一死亡奇迹背后的真相
- 在MFC中应用CTreeCtrl控件的技巧(对话框重叠)