Groovy语法入门指南:快速掌握核心要点

文章目录

  • 1. Groovy 的特点
  • 2. 基本语法
  • 2.1. 变量
  • 2.2. 字符串
  • 2.3. 条件语句
  • 3. 集合操作
  • 3.1. 列表(List)
  • 3.2. 映射(Map)
  • 4. 循环语句
  • 4.1. 普通循环
  • 4.2. 闭包遍历
  • 5. 方法定义
  • 6. 闭包(Closure)
  • 6.1. 定义与调用
  • 6.2. 默认参数
  • 6.3. 闭包与集合操作
  • 7. 类与对象
  • 7.1. 类定义
  • 7.2. 简化 Getter 和 Setter
  • 8. 操作符增强
  • 8.1. 范围操作符
  • 8.2. 安全导航操作符(`?.`)
  • 8.3. Elvis 操作符(`?:`)
  • 9. 文件操作
  • 9.1. 读取文件
  • 9.2. 写入文件
  • 10. Groovy 与 Java 的互操作
  • 学习建议
  • Groovy 是一种动态语言,运行在 JVM(Java 虚拟机)上,既可以独立使用,也可以与 Java 无缝集成。它以简洁、灵活的语法著称,是 Gradle 的默认脚本语言。以下是对 Groovy 语法的详细介绍,帮助初学者快速入门。


    1. Groovy 的特点

  • 动态语言:可以省略类型声明,代码简洁。
  • 兼容性强:可以直接调用 Java 类库,Java 代码几乎可以直接运行在 Groovy 中。
  • 丰富的语法糖:如闭包、字符串插值、集合操作等。

  • 2. 基本语法

    2.1. 变量

  • 动态类型:使用 def 定义变量。
  • 静态类型:直接声明类型。
  • def name = "Groovy"       // 动态类型
    int age = 25              // 静态类型
    println "Name: $name, Age: $age"
    

    2.2. 字符串

  • 单引号字符串:普通字符串。
  • 双引号字符串:支持字符串插值。
  • 多行字符串:使用三引号 '''"""
  • def single = 'Hello'
    def interpolated = "Hello, ${name}"  // 字符串插值
    def multiline = '''This is
    a multiline
    string'''
    

    2.3. 条件语句

    与 Java 类似,但可以省略括号和类型。

    def x = 10
    if (x > 5) {
        println "x is greater than 5"
    } else {
        println "x is less than or equal to 5"
    }
    

    3. 集合操作

    Groovy 提供了强大的集合类支持,如 ListMap,并附带许多实用操作。

    3.1. 列表(List)

    def list = [1, 2, 3, 4, 5]   // 创建列表
    println list[0]              // 访问元素
    list << 6                    // 添加元素
    println list.size()          // 获取大小
    list.each { println it }     // 遍历
    

    3.2. 映射(Map)

    def map = [key1: "value1", key2: "value2"]  // 创建映射
    println map.key1                           // 访问值
    map.key3 = "value3"                        // 添加键值对
    println map
    

    4. 循环语句

    4.1. 普通循环

    for (i in 1..5) {  // 范围操作符 ..
        println "Number: $i"
    }
    

    4.2. 闭包遍历

    list.each { println "Element: $it" }  // $it 是默认变量
    

    5. 方法定义

  • 普通方法
  • def greet(String name) {
        return "Hello, $name"
    }
    println greet("World")
    
  • 简化方法:可以省略 return
  • def add(a, b) {
        a + b  // 自动返回结果
    }
    println add(3, 4)
    

    6. 闭包(Closure)

    闭包是 Groovy 的核心特性,类似于 Java 的 Lambda 表达式。

    6.1. 定义与调用

    def closure = { String name -> "Hello, $name" }
    println closure("Groovy")
    

    6.2. 默认参数

    如果闭包没有显式声明参数,则使用默认变量 it

    def greet = { println "Hello, $it" }
    greet("World")
    

    6.3. 闭包与集合操作

    def numbers = [1, 2, 3, 4, 5]
    numbers.each { println it * 2 }  // 将每个元素乘以 2
    

    7. 类与对象

    Groovy 支持面向对象编程,与 Java 类似,但更简洁。

    7.1. 类定义

    class Person {
        String name
        int age
        void introduce() {
            println "My name is $name, and I'm $age years old."
        }
    }
    def person = new Person(name: "Alice", age: 25)
    person.introduce()
    

    7.2. 简化 Getter 和 Setter

    Groovy 自动生成 gettersetter 方法。

    person.name = "Bob"
    println person.name
    

    8. 操作符增强

    8.1. 范围操作符

    def range = 1..10  // 范围 [1, 10]
    println range.contains(5)  // 是否包含
    

    8.2. 安全导航操作符(?.

    防止空指针异常。

    def person = null
    println person?.name  // 不会报错
    

    8.3. Elvis 操作符(?:

    用于简化空值处理。

    def name = null
    println name ?: "Default Name"  // 如果 name 为空,返回默认值
    

    9. 文件操作

    Groovy 提供了简便的文件读写方法。

    9.1. 读取文件

    new File('example.txt').eachLine { line ->
        println line
    }
    

    9.2. 写入文件

    new File('example.txt').withWriter { writer ->
        writer.write("Hello, Groovy!")
    }
    

    10. Groovy 与 Java 的互操作

  • 调用 Java 类
  • import java.util.Date
    def now = new Date()
    println now.toString()
    
  • 将 Groovy 用作 Java
  • // Java 中调用 Groovy 代码
    GroovyShell shell = new GroovyShell();
    Object result = shell.evaluate("3 + 4");
    System.out.println(result);  // 输出 7
    

    学习建议

    1. 动手实践:尝试使用 Groovy 脚本实现简单的任务,如文件操作、数据处理等。
    2. 阅读官方文档:Groovy 官方文档
    3. 学习 Gradle 构建文件:了解 Groovy 在构建脚本中的实际应用。

    通过 Groovy 的灵活语法和丰富特性,你可以大幅提升开发效率!


    结束语
    Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

    作者:江上清风山间明月

    物联沃分享整理
    物联沃-IOTWORD物联网 » Groovy语法入门指南:快速掌握核心要点

    发表回复