`
xnnyygn
  • 浏览: 45142 次
  • 性别: 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 中文版 2017.11

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

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

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

    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

    ### 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中文版(1)

    ### Groovy之旅知识点详解 #### 一、Groovy背景 **1.1 Groovy是什么?** Groovy是一种灵活且强大的编程语言,它被设计用于Java平台,并与Java完全兼容。这意味着开发者可以在现有的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