- 浏览: 44104 次
- 性别:
- 来自: 上海
最新评论
-
wangdgsc:
你好,我最近也在搞这个strutstest,不过遇到了一个问题 ...
使用cactus测试ssh应用(2) -
gsshcl:
(=ω=)哼哼~果然是人老了,看不清了啊~~~~
ubuntu修改tty分辨率
这里看的时间稍微长了一点,从43到100页,看起来还算顺。
首先是看到一个spaceship operator: <=>,作为少数dynamic language拥有的特殊比较符号,可以认为是以下函数
第二个是duck typing。xy并没有完全理解这个词组的意思,按照WIKIPEDIA的解释:
duck typing is a style of dynamic typing in which an object's current set of methods and properties determines the valid semantics, rather than its inheritance from a particular class or implementation of a specific interface.
而duck typing的由来是duck testing,也就是“某个学鸭子走路,鸭子叫的鸟,我们认为是鸭子”的实验。
就XY的理解,方法体 a*3, 假如a是int,则返回数学意义上的乘法,但是如果我输入‘hello',则返回'hellohellohello',也就是连接起来的3个'hello'。有人认为这种方法需要写文档,提示programmers。
另外一方面,这个duck typing是static 和dynamic language的不同的地方,作为从static过渡到dynamic的,需要学习这个duck typing来发挥dynamic的优势。
第三个是double dispatch,WIKIPEDIA的解释:
double dispatch is a mechanism that dispatches a function call to different concrete functions depending on the runtime types of multiple objects involved in the call.
XY的理解基于1+1.0,按照dynamic language的设定,这个1是Integer,而这个1.0是BigDecimal,假如我在Integer的类中写上plus(BigDecimal ???)的语句的话,我可以调用BigDecimal的plus(Integer ???)的方法。事实上1+1.0==1.0+1,而我确实可以通过这个double dispatch来reuse。不过个人认为这样做有一个前提,就是parameters必须是object,否则double dispatch会有限制。这个问题在dynamic language上基本不会出现。
第四个是1+1的问题,也就是类型问题,因为java中除了String之外,Object和Object不能相加,只有primitive类型才可以操作。但是在dynamic language中,这个限制被取消了,这里的两个1都是Integer,调用plus方法,返回一个值为2的Integer。
虽然这个1+1问题是在autoboxing的时候提到的,但是,只要不接触java代码,那么就没有autoboxing的步骤。
最后是让xy可能一生难忘的“一行遍历当前目录下所有文件/文件夹“的代码。
这句话中有很多可以分析的要点。
1:'',这个是单引号,而不是双引号。按照groovy的设定,单引号内容不解析,这个是需要了解的。
2:new File('.'),匿名类的实例+构造函数,这个和java区别不大。
3:eachFileRecurse,递归遍历文件,可以附加一个closure
4:{println it}:,losure,默认的参数为it,这个要记住
5:println it,it为一个java.io.File的实例,知道这个之后我们可以把it替换为it.size()来遍历显示文件大小(包括文件夹);其次println调用了it的toString()方法。
结语:再次被dynamic language的魅力征服
首先是看到一个spaceship operator: <=>,作为少数dynamic language拥有的特殊比较符号,可以认为是以下函数
//a<=>b if(a>b){return 1;} else if(a==b){return 0;} else if(a<b){return -1} else {return undef;}
第二个是duck typing。xy并没有完全理解这个词组的意思,按照WIKIPEDIA的解释:
duck typing is a style of dynamic typing in which an object's current set of methods and properties determines the valid semantics, rather than its inheritance from a particular class or implementation of a specific interface.
而duck typing的由来是duck testing,也就是“某个学鸭子走路,鸭子叫的鸟,我们认为是鸭子”的实验。
就XY的理解,方法体 a*3, 假如a是int,则返回数学意义上的乘法,但是如果我输入‘hello',则返回'hellohellohello',也就是连接起来的3个'hello'。有人认为这种方法需要写文档,提示programmers。
另外一方面,这个duck typing是static 和dynamic language的不同的地方,作为从static过渡到dynamic的,需要学习这个duck typing来发挥dynamic的优势。
第三个是double dispatch,WIKIPEDIA的解释:
double dispatch is a mechanism that dispatches a function call to different concrete functions depending on the runtime types of multiple objects involved in the call.
XY的理解基于1+1.0,按照dynamic language的设定,这个1是Integer,而这个1.0是BigDecimal,假如我在Integer的类中写上plus(BigDecimal ???)的语句的话,我可以调用BigDecimal的plus(Integer ???)的方法。事实上1+1.0==1.0+1,而我确实可以通过这个double dispatch来reuse。不过个人认为这样做有一个前提,就是parameters必须是object,否则double dispatch会有限制。这个问题在dynamic language上基本不会出现。
第四个是1+1的问题,也就是类型问题,因为java中除了String之外,Object和Object不能相加,只有primitive类型才可以操作。但是在dynamic language中,这个限制被取消了,这里的两个1都是Integer,调用plus方法,返回一个值为2的Integer。
虽然这个1+1问题是在autoboxing的时候提到的,但是,只要不接触java代码,那么就没有autoboxing的步骤。
最后是让xy可能一生难忘的“一行遍历当前目录下所有文件/文件夹“的代码。
new File('.).eachFileRecurse{println it}
这句话中有很多可以分析的要点。
1:'',这个是单引号,而不是双引号。按照groovy的设定,单引号内容不解析,这个是需要了解的。
2:new File('.'),匿名类的实例+构造函数,这个和java区别不大。
3:eachFileRecurse,递归遍历文件,可以附加一个closure
4:{println it}:,losure,默认的参数为it,这个要记住
5:println it,it为一个java.io.File的实例,知道这个之后我们可以把it替换为it.size()来遍历显示文件大小(包括文件夹);其次println调用了it的toString()方法。
结语:再次被dynamic language的魅力征服
发表评论
-
groovy console readInt
2009-08-03 09:24 1523手中有一本groovy的教程,是那本不算厚的来自某个外国大学的 ... -
linux下用aptana“代替”dreamwaver
2009-07-29 09:25 1547好久没有来这里写东西,主要还是在twitter和自己学校论坛活 ... -
jspwiki+glassfish(zip)
2009-07-04 06:01 1148使用glassfish的zip包原因是要模拟在服务器上配置gl ... -
随想0702
2009-07-02 21:21 658早上首先考虑如何替换glassfish的admin的密码,监视 ... -
初识glassfish
2009-07-01 18:59 891以前XY一直使用的是apache+tomcat的配置。tomc ... -
ubuntu9.04上编译安装firefox 3.5(shiretoko)
2009-07-01 09:55 3560昨天,也就是6月30日,firefox 3.5正式发布了,不过 ... -
S60手机使用putty进行ssh登录
2009-06-30 08:03 2216在同学的介绍下,了解到putty居然有s60版本。正好xy的手 ... -
使用抓虾
2009-06-22 07:28 737最近寻找RSS的时候,发现了一个不错的网站,抓虾。 本来XY是 ... -
EBVIEW和DICTCN
2009-06-05 13:48 1046EBVIEW EBVIEW是一个不错的日文字典,在gnome- ... -
vsftpd安装与配置
2009-06-05 12:55 942以下主要是作为备忘。 从ftp://vsftpd.beast ... -
解决了不小心删除synaptic的问题
2009-06-05 04:12 930首先通过 sudo apt-get install synap ... -
重新安装电脑
2009-06-05 03:00 761这次相比几个星期以前的重装不同在于确定了基本上不使用windo ... -
哎,果然还是无法和C++断绝关系阿
2009-05-30 20:28 772XY不喜欢C++,是有原因的.不过XY不想去回忆自己为什么会讨 ... -
Firefox,网站开发第二个IDE
2009-05-30 19:17 880取这个标题,并不是为了 ... -
现在要找一本适合的书难啊
2009-05-30 13:54 719理论上来说,现在的书越来越多,应该更加容易找到适合自己的书才对 ... -
使用cactus测试ssh应用(2)
2009-02-21 19:54 1429接1 接下来就是考虑如 ... -
使用cactus测试ssh应用(1)
2009-02-21 19:23 2325最近拿到了《Junit In Acti ... -
尝试使用edtftpj遍历FTP服务器上的列表
2008-12-13 16:09 2002edtFTPj提供了一个简易的构建FTP客户端的方法集合。现在 ...
相关推荐
Groovy in Action is a comprehensive guide to Groovy programming, introducing Java developers to the new dynamic features that Groovy provides. To bring you Groovy in Action, Manning again went to the...
Groovy是一种运行在Java虚拟机上的敏捷开发语言,它提供了与Java无缝集成的能力,同时为开发者带来更加简洁和富有表达性的语法。Groovy提供了大量的动态特性,比如动态类型、闭包、元编程能力等,使得编写脚本或应用...
《Groovy in Action》这本书由Dierk König与Andrew Glover、Paul King、Guillaume Laforge以及Jon Skeet共同编写,是一本深入探索Groovy编程语言的权威指南。本书由Manning Publications出版,全面覆盖了Groovy语言...
### Groovy in Action:深入学习Groovy编程语言 #### 一、引言 《Groovy in Action》是一本详尽介绍Groovy编程语言的书籍,由Dierk König撰写,并得到了Andrew Glover、Paul King、Guillaume Laforge以及Jon ...
《Groovy in Action》是一本深受开发者喜爱的书籍,它深入浅出地介绍了Groovy编程语言,涵盖了Groovy的基础语法、高级特性以及在实际开发中的应用。源代码是书籍内容的实践部分,对于读者理解Groovy语言并进行实战...
Groovy in Action是一本权威的Groovy教程,由Dierk Koenig和Andrey Breslav等专家撰写,它深入浅出地介绍了Groovy的各个方面,是学习Groovy的必备参考书。 这本书分为多个部分,首先介绍Groovy的基础知识,包括语法...
《Groovy in Action》是一本深入探讨Groovy编程语言的专业书籍,中文版的出现使得国内开发者更容易理解和掌握Groovy的相关知识。Groovy是基于Java虚拟机(JVM)的一种动态、灵活的编程语言,它结合了脚本语言的便利...
2. Groovy的运行方式 Groovy支持多种运行方式,开发者可以使用Groovy提供的命令行工具,如GroovySH(交互式shell)或GroovyConsole,来快速编写和执行Groovy脚本。对于复杂的项目,Groovy代码可以编译成Java字节码后...
本书《Groovy in Action》英文第二版为读者提供了全面的Groovy实战指南。在前言中,我们看到James Gosling,Java的创始人,对此书给予高度评价,这也反映了Groovy在动态语言特性以及在敏捷开发方面的表现。 本书...
《Groovy in Action》是一本深入探讨Groovy编程语言的专业书籍,主要面向已经熟悉Java的开发者,旨在帮助他们理解和掌握Groovy的特性和优势。Groovy是Java平台上的动态脚本语言,它融合了多种语言的特性,如Python、...
《Groovy in Action》是一本深入探讨Groovy编程语言的专业书籍,它为开发者提供了一条通往Groovy世界的全面路径。Groovy,作为一种动态、灵活的Java平台语言,因其简洁的语法和强大的功能,被广泛应用于脚本编写、...
Groovy是一种语言,其语法类似于Java,但比Java更简单。它通常被视为脚本/灵活/动态的语言,但是我不喜欢这类形容词,因为我认为它们只会令人困惑。如果说Java是一位明智的中年男子,那么Groovy就是他十几岁的儿子。...
《Groovy in Action》中文版是一本专门为Java开发者设计的Groovy编程指南,旨在帮助他们理解和利用Groovy这种新兴的脚本语言。Groovy作为Java平台的一员,它引入了诸如Ruby语言的一些流行特性,使Java开发者能更方便...