专栏名称: 刘望舒
腾讯云最具价值专家
目录
相关文章推荐
复利大王  ·  好牛的幼儿园 ·  11 小时前  
鸿洋  ·  务必立即拿下软考证(政策红利) ·  昨天  
复利大王  ·  冷暴力女王,翻车了 ·  昨天  
复利大王  ·  手握25w华子股票,躺平了 ·  昨天  
郭霖  ·  Android ... ·  4 天前  
51好读  ›  专栏  ›  刘望舒

Android Gradle(三)Groovy快速入门指南

刘望舒  · 掘金  · android  · 2018-10-10 03:05

正文

请到「今天看啥」查看全文


1.Groovy概述

Groovy是Apache 旗下的一种基于JVM的面向对象编程语言,既可以用于面向对象编程,也可以用作纯粹的脚本语言。在语言的设计上它吸纳了Python、Ruby 和 Smalltalk 语言的优秀特性,比如动态类型转换、闭包和元编程支持。 Groovy与 Java可以很好的互相调用并结合编程 ,比如在写 Groovy 的时候忘记了语法可以直接按Java的语法继续写,也可以在 Java 中调用 Groovy 脚本。比起Java,Groovy语法更加的灵活和简洁,可以用更少的代码来实现Java实现的同样功能。

2.Groovy编写和调试

Groovy的代码可以在Android Studio和IntelliJ IDEA等IDE中进行编写和调试,缺点是需要配置环境,这里推荐在文本中编写代码并结合命令行进行调试(文本推荐使用Sublime Text)。关于命令行请查看 Android Gradle(二)Gradle入门前奏 这篇文章。 具体的操作步骤就是:在一个目录中新建build.gradle文件,在build.gradle中新建一个task,在task中编写Groovy代码,用命令行进入这个build.gradle文件所在的目录,运行gradle task名称 等命令行对代码进行调试,本文中的例子都是这样编写和调试的。

3.变量

Groovy中用def关键字来定义变量,可以不指定变量的类型,默认访问修饰符是public。

def a = 1;
def int b = 1;
def c = "hello world";
复制代码

4.方法

方法使用返回类型或def关键字定义,方法可以接收任意数量的参数,这些参数可以不申明类型,如果不提供可见性修饰符,则该方法为public。 用def关键字定义方法。

task method <<{
	add (1,2)
	minus 1,2 //1
}
def add(int a,int b) { 
 println a+b //3
}  
def minus(a,b) {//2 
 println a-b
}   
复制代码

如果指定了方法返回类型,可以不需要def关键字来定义方法。

task method <<{
	def number=minus 1,2
	println number
}
int minus(a,b) { 
  return a-b 
}  
复制代码

如果不使用return ,方法的返回值为最后一行代码的执行结果。

int minus(a,b) { 
  a-b //4
}  
复制代码

从上面两段代码中可以发现Groovy中有很多省略的地方:

  1. 语句后面的分号可以省略。
  2. 方法的括号可以省略,比如注释1和注释3处。
  3. 参数类型可以省略,比如注释2处。
  4. return可以省略掉,比如注释4处。

5.类

Groovy类非常类似于Java类。

task method <<{
	def p = new Person()
    p.increaseAge 5
	println p.age
}
class Person {                       
    String name                      
    Integer age =10
    def increaseAge(Integer years) { 
        this.age += years
    }
}
复制代码

运行 gradle method打印结果为: 15

Groovy类与Java类有以下的区别:

  1. 默认类的修饰符为public。
  2. 没有可见性修饰符的字段会自动生成对应的setter和getter方法。
  3. 类不需要与它的源文件有相同的名称,但还是建议采用相同的名称。

6.语句

6.1 断言

Groovy断言和Java断言不同,它一直处于开启状态,是进行单元测试的首选方式。

task method <<{
  assert 1+2 == 6
}
复制代码

输出结果为:

Execution failed for task ':method'.
> assert 1+2 == 6
          |  |
          3  false
复制代码

当断言的条件为false时,程序会抛出异常,不再执行下面的代码,从输出可以很清晰的看到发生错误的地方。







请到「今天看啥」查看全文


推荐文章
复利大王  ·  好牛的幼儿园
11 小时前
复利大王  ·  冷暴力女王,翻车了
昨天
复利大王  ·  手握25w华子股票,躺平了
昨天
百思不得姐  ·  潘金莲和西门庆偷情的报应!
8 年前
儿童摄影引导技巧  ·  天气太热了,看完不许笑!
7 年前