`
dean_liu
  • 浏览: 76226 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

《Groovy入门经典》笔记

阅读更多
第4章 列表、映射和范围

在映射字面值中,如果某个元素的关键字是一个变量名,那么它将被解释成一个String值。
在下面的范例中:
def x = 1
def y = 2
def m = [x :y, y : x]

于是,m就是映射:
m = ['x' : 2, 'y' : 1]

Groovy User Guide的描述:
引用
Map keys are strings by default: [a:1] is equivalent to ["a":1]. But if you really want a variable to become the key, you have to wrap it between parentheses: [(a):1].

事实上在映射字面值中Groovy没有把Key当作变量(当Key看起来像个变量时),而只是当成是字符串,这跟Javascript是类似的,除了为变量为上括号外的方法可以把变量作为Key,另一个方法通过map[key]=value方法设置。
而在Javascript中只有第二方法才可行,如:

var field = 'fooVar';
var value = 'barVar';
$.post('/path/to/url', { field:value, 'fooString':'barString' });

// Actual result
field = barVar
fooString = barString

// Expected result    
foo = barVar
fooString = barString

// 正确的写法应为
var field = 'fooVar';
var value = 'barVar';
var postData = {};
postData[field] = value;
postData['fooString'] = 'barString';
$.post('/path/to/url', postData);


定义空映射:
def map = [:]

相当于Java代码:
Map map = new HashMap();


定义范围:
def r = 1..100

注意:
1.定义中没有[],如果定义时使用了[]即会定义成列表;
2.在操作列表时使用[],实际上是表示对getAt跟putAt的调用,与定义无关。


第7章 方法

当某个方法的声明含有默认参数时,默认参数仅能出现在非默认参数之后。
def someMethod(para1, para2 = 0, para3 = 0){
// Method code goes here
}

当调用方法未传递某个参数时使用默认参数(如果有),传递null时不使用默认参数:
def sayHello(name = 'Ken'){
    println "Hello, $name"
}
sayHello('Dean')	// Hello, Dean
sayHello()		// Hello, Ken
sayHello(null)		// Hello, null


第8章 流程控制

case表达式既可以表示某个整型值,也可以表示整形值的范围。实际上,case表达式还可以是一个字符串、列表、正则表达式或者某些类的对象(参见第12章)。

第9章 闭包
1.闭包可以引用它定义时候可见的变量:
def greeting = 'Hello'
def clos = {param -> println "${greeting} ${param}"}	// 可访问到greeting

def demo(clo){
    def greeting = 'Bonjour'	// 此greeting不可见
    clo.call('Ken')
}

demo(clos)

执行结果为:
Hello Ken
2.方法调用时如果有传递参数则可以省略圆括号,如以下代码的3与4:
3.Groovy为方法调用闭包提供了一个简化方案,这使得代码相对简单易懂——如果方法调用的最后一个参数是闭包,即可以将它从参数列表中删除,并放到其后的括号中去,前提是使用闭包字面值而不是引用,如以下代码的1与2:
def greeting = 'Hello'
def clos = {param -> println "${greeting} ${param}"}

def demo(clo){
    def greeting = 'Bonjour'
    clo.call('Ken')
}

//demo()clos																																// 1.错误
demo(){param -> println "Welcome ${param}"}			// 2.正确

demo clos																																	// 3.正确
demo {param -> println "Welcome ${param}"}			// 4.正确


由于闭包也是一个对象,所以闭包也有以下特性:
1.作为方法的参数;
2.调用其它闭包;
3.作为其它闭包的参数;
4.作为方法的返回值;
5.作为其它闭包的返回值;
6.包含嵌套其它闭包。

第12章 类
http://blog.csdn.net/hivon/article/details/2346165
分享到:
评论

相关推荐

    Groovy学习笔记 PDF版

    在《Groovy学习笔记》这本书中,你可能会学到如何快速入门Groovy,理解其基本语法,包括变量、控制流、类和对象的创建,以及如何利用Groovy的特性来提高开发效率。此外,书中可能还会涵盖Groovy在实际项目中的应用,...

    Groovy学习笔记

    ### Groovy学习笔记知识点梳理 #### 一、Groovy简介 - **概念**:Groovy是一种灵活的脚本语言,其设计初衷是为了更好地服务于Java开发者。它具备许多现代动态语言的特点,比如Python和Ruby,同时又能够无缝地与Java...

    groovy学习笔记

    以下是对Groovy学习笔记各章节的详细解释: ### 第1章:数字和字符串 在Groovy中,所有的数字都是Object类型的,这意味着你可以在对象上调用方法。例如,你可以直接在数字上使用加减乘除等运算符,如`12 + 8`。...

    Groovy语法&Gradle配置学习笔记

    - **Gradle入门**:学习如何创建Gradle项目,配置build.gradle文件,以及执行基本的构建任务。 - **Gradle插件**:了解常用的Gradle插件,如Java插件,学会如何自定义和应用插件。 - **依赖管理**:熟悉Gradle的依赖...

    groovy-learning:https

    入门笔记 基于《Learning Groovy》 Authors: Davis, Adam L. github文档地址 https://richardgong1987.github.io/groovy-learning 本人网名:止水 email: skype: ae3586 如果你觉得有用,也可以支付宝打赏小弟,...

    GroovyPDF文档

    Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大...本套资源中包含了:Groovy轻松入门 ,Groovy中文教程, Groovy用户指南, Groovy学习笔记,Groovy官方demo,五本书!

    Spring Boot核心技术-笔记_springboot_

    这个"Spring Boot核心技术-笔记"涵盖了从基础到高级的大量知识点,旨在帮助开发者从入门到精通Spring Boot。以下是对这些核心概念的详细阐述: 1. **起步依赖(Starters)** Spring Boot通过起步依赖简化了依赖...

    Spring Boot 笔记 二 (核心)

    在本笔记中,我们将深入探讨Spring Boot的核心特性,以及如何利用这些特性来构建高效且易于维护的项目。 1. **起步依赖(Starter Dependencies)** Spring Boot的起步依赖是其核心特性之一,它允许开发者通过添加...

    initializr:Spring项目的快速入门生成器

    SpringInitializr Spring Initializr提供了一个可扩展的API来生成基于JVM的项目,并带有几种常见概念的实现: Java,Kotlin和Groovy的基本语言生成。 使用Apache Maven和Gradle的实现构建系统抽象。 .gitignore支持...

    Spark学习笔记

    ### Spark学习笔记知识点详解 #### 一、Scala基础概述 **1.1 什么是Scala** Scala是一种现代化的、多范式的编程语言,旨在融合面向对象编程与函数式编程的优势。它运行于Java平台上,能够充分利用Java虚拟机(JVM)...

    javaee笔试题-heyuan110.github.com.comments:heyuan110.github.com评论

    读书笔记及其它 语言无关类 操作系统 (简体) (中英文版) WEB服务器 (淘宝团队出品) 版本控制 NoSQL () MySQL 项目相关 (译言网) Web 编程艺术 【第一部分】 语言相关类 C/C++ () (宋劲杉, 北京亚嵌教育研究中心) (中...

    javaee笔试题-jenkins-demo:詹金斯演示

    读书笔记及其它 语言无关类 操作系统 (简体) (中英文版) WEB服务器 (淘宝团队出品) 版本控制 NoSQL () MySQL 项目相关 (译言网) Web 编程艺术 【第一部分】 语言相关类 C/C++ () (宋劲杉, 北京亚嵌教育研究中心) (中...

    spring-examples:弹簧示例

    : 01 - 基本级别02 - 中级03 - 高级04 - 完整的解决方案笔记所有项目都基于 Groovy 和 Gradle。 以'j'开头的项目基于Java 有些项目不包含 UNIT TEST 但包含 groovy 脚本。 ###01 - 弹簧容器项目: 01-spring-...

    Spirng boot笔记

    1. **使用 logback**: Spring Boot 默认使用 logback 作为日志框架,可以通过配置 `logback-spring.xml` 或 `logback-spring.groovy` 来定制日志行为。 2. **自定义配置**: 如果需要使用自定义的日志配置文件,可以...

    WebService接口调试工具- SoapUI-5.2.1-windows-bin.zip

    - 脚本支持:内置Groovy脚本语言,可自定义复杂逻辑或自动化测试。 - 性能测试:能够模拟大量并发请求,进行性能和负载测试。 - 数据驱动测试:可以从外部数据源导入数据,实现数据驱动的接口测试。 3. **使用...

Global site tag (gtag.js) - Google Analytics