Java通过使用方括号和下标来索引数组,这种方式我们叫做下标操作符(subscript operator),groovy采用了相同的语法来支持list——java.util.List的实例, java.util.List允许向列表增加对象或者从列表中删除对象,允许在运行时改变列表的大小,保存在列表中的对象不受类型的限制;另外,groovy可以通过超出列表范围的数来索引列表,再一次表明可以改变列表的大小,此外,列表也可以直接在代码中指定。
下面的例子声明一个罗马数字列表并且用开头7个数来初始化这个列表,如图2.3所示
列表中每一个位置对应一个罗马数字,做起来就像使用数组一样,但是在groovy中,还有更多以前只有用数组的操作也被应用到list列表:
//罗马数字列表
def roman = [‘’, ‘I’, ‘II’, ‘III’, ‘IV’, ‘V’, ‘VI’, ‘VII’]
//访问列表
assert roman[4] == ‘IV’
//扩张列表
roman[8] = ‘VIII’
assert roman.size() == 9
注意,在我们为列表位置索引为8的位置赋值时,该位置其实并不存在,代码中操作了超出列表范围的位置。
简单的映射(maps)
一个map是用来给一个键(key)分配值(value)的强类型,map通过key存储和找回值(values),但是list通过位置找回值。
不像java,groovy在语言级别支持map,允许使用特定的操作符来操作map,这是一个清晰的和简单的语法,maps的操作语法像键—值对数组,通过冒号分隔键(key)和值(values)。
他们一起被获取。
下面的例子存储http返回的代码描述在一个map中,如图2.4描绘的那样:
![]()
你看到的map的声明和初始化,获取值和增加新的实体,这些的都在源代码中通过一个方法完成,甚至是检查map的size:[code]def http = [
100 : ‘CONTINUE’,
200 : ‘OK’,
400 : ‘BAD REQUEST’ ]
assert http[200] == ‘OK’
http[500] = ‘INTERNAL SERVER ERROR’ assert http.size() == 4
[/code]注意声明、访问和修改列表是如何统一在一起的,map和list之间的差别非常小。
因此,这两个都很容易记住,这个例子很好的说明了groovy语言设计者怎样设计一般的请求操作,并且为程序员提供简单的、一致的语法,让程序员的工作更轻松。
