(2.2.9.2)Groovy 中的数据类型
Groovy 中的数据类型我们就介绍两种和 Java 不太一样的:
放心,这里介绍的东西都很简单 基本数据类型作为动态语言,Groovy 世界中的所有事物都是对象。所以,int,boolean 这些 Java 中的基本数据类型,在 Groovy 代码中其实对应的是它们的包装数据类型。比如 int 对应为 Integer,boolean 对应为 Boolean。比如下图中的代码执行结果:
容器类Groovy 中的容器类很简单,就三种:
对容器而言,我们最重要的是了解它们的用法。下面是一些简单的例子: 1.List 类 变量定义:List 变量由[]定义,比如 def aList = [5,'string',true] //List 由[]定义,其元素可以是任何对象 变量存取:可以直接通过索引存取,而且不用担心索引越界。如果索引超过当前链表长度,List 会自动 往该索引添加元素 assert aList[1] == 'string' assert aList[5] == null //第 6 个元素为空 aList[100] = 100 //设置第 101 个元素的值为 10 assert aList[100] == 100 那么,aList 到现在为止有多少个元素呢? println aList.size ===>结果是 101 2.Map 类 容器变量定义 变量定义:Map 变量由[:]定义,比如 def aMap = ['key1':'value1','key2':true] Map 由[:]定义,注意其中的冒号。冒号左边是 key,右边是 Value。key 必须是字符串,value 可以是任何对象。另外,key 可以用''或""包起来,也可以不用引号包起来。比如 def aNewMap = [key1:"value",key2:true] //其中的 key1 和 key2 默认被 处理成字符串"key1"和"key2" 不过 Key 要是不使用引号包起来的话,也会带来一定混淆,比如 def key1="wowo" def aConfusedMap=[key1:"who am i?"] aConfuseMap 中的 key1 到底是"key1"还是变量 key1 的值“wowo”?显然,答案是字符串"key1"。如果要是"wowo"的话,则 aConfusedMap 的定义必须设置成: def aConfusedMap=[(key1):"who am i?"] Map 中元素的存取更加方便,它支持多种方法: println aMap.keyName <==这种表达方法好像 key 就是 aMap 的一个成员变量一样 println aMap['keyName'] <==这种表达方法更传统一点 aMap.anotherkey = "i am map" <==为 map 添加新元素 3.Range 类 Range 是 Groovy 对 List 的一种拓展,变量定义和大体的使用方法如下: def aRange = 1..5 <==Range 类型的变量 由 begin 值+两个点+end 值表示 左边这个 aRange 包含 1,2,3,4,5 这 5 个值 如果不想包含最后一个元素,则 def aRangeWithoutEnd = 1..<5 <==包含 1,4 这 4 个元素 println aRange.from println aRange.to Groovy API 的一些秘笈前面讲这些东西,主要是让大家了解 Groovy 的语法。实际上在 coding 的时候,是离不开 SDK 的。由于 Groovy 是动态语言,所以要使用它的 SDK 也需要掌握一些小诀窍。 Groovy 的 API 文档位于?<a rel="nofollow" href="http://www.groovy-lang.org/api.html" "="" style="box-sizing: border-box; color: rgb(45,133,202); text-decoration: none; background-color: transparent;">http://www.groovy-lang.org/api.html 以上文介绍的 Range 为例,我们该如何更好得使用它呢?
有了 API 文档,你就可以放心调用其中的函数了。不过,不过,不过:我们刚才代码中用到了 Range.from/to 属性值,但翻看 Range API 文档的时候,其实并没有这两个成员变量。图 6 是 Range 的方法
文档中并没有说明 Range 有 from 和 to 这两个属性,但是却有 getFrom 和 getTo 这两个函数。What happened?原来: 根据 Groovy 的原则,如果一个类中有名为 xxyyzz 这样的属性(其实就是成员变量),Groovy 会自动为它添加 getXxyyzz 和 setXxyyzz 两个函数,用于获取和设置 xxyyzz 属性值。 注意,get 和 set 后第一个字母是大写的 所以,当你看到 Range 中有 getFrom 和 getTo 这两个函数时候,就得知道潜规则下,Range 有 from 和 to 这两个属性。当然,由于它们不可以被外界设置,所以没有公开 setFrom 和 setTo 函数。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |