`
xnnyygn
  • 浏览: 44092 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

groovy in action 笔记 2

阅读更多
这里看的时间稍微长了一点,从43到100页,看起来还算顺。

首先是看到一个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 in action

    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 in action 中文版 2017.11

    Groovy是一种运行在Java虚拟机上的敏捷开发语言,它提供了与Java无缝集成的能力,同时为开发者带来更加简洁和富有表达性的语法。Groovy提供了大量的动态特性,比如动态类型、闭包、元编程能力等,使得编写脚本或应用...

    groovy in action.pdf

    《Groovy in Action》这本书由Dierk König与Andrew Glover、Paul King、Guillaume Laforge以及Jon Skeet共同编写,是一本深入探索Groovy编程语言的权威指南。本书由Manning Publications出版,全面覆盖了Groovy语言...

    groovy+in+action

    ### Groovy in Action:深入学习Groovy编程语言 #### 一、引言 《Groovy in Action》是一本详尽介绍Groovy编程语言的书籍,由Dierk König撰写,并得到了Andrew Glover、Paul King、Guillaume Laforge以及Jon ...

    Groovy in Action源代码

    《Groovy in Action》是一本深受开发者喜爱的书籍,它深入浅出地介绍了Groovy编程语言,涵盖了Groovy的基础语法、高级特性以及在实际开发中的应用。源代码是书籍内容的实践部分,对于读者理解Groovy语言并进行实战...

    Groovy学习资料(包括Groovy in action 的中英文以及API)

    Groovy in Action是一本权威的Groovy教程,由Dierk Koenig和Andrey Breslav等专家撰写,它深入浅出地介绍了Groovy的各个方面,是学习Groovy的必备参考书。 这本书分为多个部分,首先介绍Groovy的基础知识,包括语法...

    Groovy in Action[文字版][中文]

    《Groovy in Action》是一本深入探讨Groovy编程语言的专业书籍,中文版的出现使得国内开发者更容易理解和掌握Groovy的相关知识。Groovy是基于Java虚拟机(JVM)的一种动态、灵活的编程语言,它结合了脚本语言的便利...

    Z2-Groovy in Action.pdf

    2. Groovy的运行方式 Groovy支持多种运行方式,开发者可以使用Groovy提供的命令行工具,如GroovySH(交互式shell)或GroovyConsole,来快速编写和执行Groovy脚本。对于复杂的项目,Groovy代码可以编译成Java字节码后...

    Groovy.in.Action.2nd.Edition.pdf

    本书《Groovy in Action》英文第二版为读者提供了全面的Groovy实战指南。在前言中,我们看到James Gosling,Java的创始人,对此书给予高度评价,这也反映了Groovy在动态语言特性以及在敏捷开发方面的表现。 本书...

    Groovy IN ACTION

    《Groovy in Action》是一本深入探讨Groovy编程语言的专业书籍,主要面向已经熟悉Java的开发者,旨在帮助他们理解和掌握Groovy的特性和优势。Groovy是Java平台上的动态脚本语言,它融合了多种语言的特性,如Python、...

    Groovy in Action.pdf

    《Groovy in Action》是一本深入探讨Groovy编程语言的专业书籍,它为开发者提供了一条通往Groovy世界的全面路径。Groovy,作为一种动态、灵活的Java平台语言,因其简洁的语法和强大的功能,被广泛应用于脚本编写、...

    Groovy in Action(2007.1).pdf-3

    Groovy是一种语言,其语法类似于Java,但比Java更简单。它通常被视为脚本/灵活/动态的语言,但是我不喜欢这类形容词,因为我认为它们只会令人困惑。如果说Java是一位明智的中年男子,那么Groovy就是他十几岁的儿子。...

    Groovy in Action 中文版

    《Groovy in Action》中文版是一本专门为Java开发者设计的Groovy编程指南,旨在帮助他们理解和利用Groovy这种新兴的脚本语言。Groovy作为Java平台的一员,它引入了诸如Ruby语言的一些流行特性,使Java开发者能更方便...

Global site tag (gtag.js) - Google Analytics