技术开发 频道

实战 Groovy: for each 剖析

  Range 迭代

  Groovy 提供了原生的 Range 类型,可以直接迭代。使用两个点分隔的所有内容(比如 1..10)都是一个 Range。清单 14 展示了这个例子:

  清单 14. Range 迭代  

def range = 5..10

  range.each{

  println it

  }

  
//output:

  
5

  
6

  
7

  
8

  
9

  
10

  Range 不局限于简单的 Integer。考虑清单 15 在的代码,其中迭代 Date 的 Range:

  清单 15. Date 迭代  

def today = new Date()

  def nextWeek
= today + 7

  (today..nextWeek).each{

  println it

  }

  
//output:

  Thu Mar
12 04:49:35 MDT 2009

  Fri Mar
13 04:49:35 MDT 2009

  Sat Mar
14 04:49:35 MDT 2009

  Sun Mar
15 04:49:35 MDT 2009

  Mon Mar
16 04:49:35 MDT 2009

  Tue Mar
17 04:49:35 MDT 2009

  Wed Mar
18 04:49:35 MDT 2009

  Thu Mar
19 04:49:35 MDT 2009

  可以看到,each() 准确地出现在您所期望的位置。Java 语言缺乏原生的 Range 类型,但是提供了一个类似地概念,采取 enum 的形式。毫不奇怪,在这里 each() 仍然派得上用场。

0
相关文章