Getris是由本人发起的开源项目,它是一个用Groovy编写的俄罗斯方块游戏。
Getris的目的是向初学者演示Groovy的各种特征,这些特征包括:
Closure
Groovy Bean
MetaClass
Mixin (使用关键字'use')
SwingBuilder
MarkupBuilder (用于创建XML)
XmlSlurper (用于解析XML)
GAnt
单元测试工具, 如MockFor类
等等……
项目地址:http://code.google.com/p/getris/
欢迎大家加入!
- 10:40
- 浏览 (131)
- 评论 (1)
- 分类: Groovy
- 发布在 Groovy on Grails 圈子
请看如下代码:
def a = 'b'
def m = [a:a]
println m // 输出[a:b]
输出的是[a:b]而不是[b:b],这是因为Groovy把Map的key都当作字符串处理了,即使没有加上单引号或者双引号。所以这里Map的key“a”并不是看作变量a,而是字符串"a"。
要让这里的a被看作变量,需要加上圆括号或者使用GString,如下所示:
m = [(a):'a']
println m // 输出[b:a]
m = ["$a":a]
println m // 输出[b:b]
- 19:52
- 浏览 (281)
- 评论 (2)
- 分类: Groovy
- 发布在 Groovy on Grails 圈子
代码如下:
def out = System.out // 也可以用import static System.out as out
def endl = '\n'
out << 'a' << ' ' << 'b' << endl
out << 1 << endl
out << 'abcdefg' << endl
这段代码可能没有什么实用价值,顶多只能展现一下Groovy的能力而已。
- 19:30
- 浏览 (220)
- 评论 (2)
- 分类: Groovy
- 发布在 Groovy on Grails 圈子
在写程序的时候,可能需要用到0到n-1的循环,一般的写法是:
for (i = 0; i < 5; ++i) {
println i
}
或者更Groovy的写法:
for (i in 0..<5) {
println i
}
但是其实可以使用int类型上的times方法:
5.times { println 'Yes' }
5.times { println it } // 输出“0 1 2 3 4”而不是“1 2 3 4 5”
5.times { i ->
println i
}
但是用times方法来做0到n-1的循环可能会影响语义,所 ...
- 08:38
- 浏览 (253)
- 评论 (3)
- 分类: Groovy
- 发布在 Groovy on Grails 圈子
一个身份证号码共18位,前17位表示地区、生日和流水号,而第18位是一个校验位。
下面是一段随机生成身份证号码的Groovy代码:
def id = []
def rand = new Random()
17.times { id << rand.nextInt(10) }
def s = 0;
def w = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]
def v = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
id.eachWithIndex { n, i -> s ...
- 21:51
- 浏览 (823)
- 评论 (4)
- 分类: Groovy
- 发布在 Groovy on Grails 圈子
今天写了个读取类的函数的签名的脚本,供学习之用,其实最主要是想看看Groovy都给类添加了些什么函数。代码就二十多行,从中又可以体现出Groovy代码之精炼 PrintClass.groovy:if (args) {
def className = args[0]
def theClass = Class.forName(className)
def theMetaClass = theClass.metaClass
def printClass = { property ->
println "The $pr ...
- 17:45
- 浏览 (299)
- 评论 (1)
- 分类: Groovy
- 发布在 Groovy on Grails 圈子
在Groovy中,as操作符有两种用途:定义导入别名和类型转换。 1. 定义导入别名只要在import一个类或方法的时候使用as操作符,就可以对其进行重命名:import java.lang.Math as M // 定义类的别名
assert M.log10(100) == 2
import static M.log10 as log // 定义方法的别名
assert log(1000) == 3 2. 类型转换语法为“变量 as 类型”,在执行这个操作时,将调用左操作数的类的asType方法:class A {
def va ...
- 19:31
- 浏览 (289)
- 评论 (1)
- 分类: Groovy
- 发布在 Groovy on Grails 圈子
利用Groovy的动态特性,不但可以给类添加属性(http://www.blogjava.net/BlueSUN/archive/2007/07/15/130318.html),还可以删除类的属性。代码如下:class A {
String attToRemove
int otherAtt
}
def a = new A()
a.attToRemove = 1
println a.attToRemove
A.metaClass.properties.remove(A.metaClass.properties.attToRemove)
println a. ...
- 浏览: 1838 次
- 性别:

- 来自: 杭州

- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
Getris 1.0 发布
先支持一下!groovy是Java领域无与伦比的技术,期待Java7的到来给gr ...
-- by cats_tiger -
Groovy学习笔记——Map的 ...
不错的小tips
-- by darkjune -
Groovy学习笔记——随机生 ...
这个只是最简单的随机生成17位数字,没看出来考虑到年月问题的东西
-- by darkjune -
Groovy学习笔记——Map的 ...
收获不了呀! 谢谢楼主了!
-- by justjavac -
Groovy学习笔记——实现简 ...
endl可以使用File的常量,就更通用了
-- by agile_boy






评论排行榜