Gradle 分享(简单入门)

2017-11-07  本文已影响36人  zhaoyubetter

Groovy的简单入门

分享的仅是 Groovy 皮毛,大神勿喷!

参考信息:

  1. http://www.jianshu.com/p/777cc61a6202

简介

Groovy是运行在JVM上的编程语言,说是一种运行在jvm中的动态语言,Groovy可以与Java无缝衔接互相调用,因为groovy编译出来的也是Java字节码;

Groovy也是一种脚本语言;
脚本语言目标是将应用程序连接起来实现一些繁琐、变动频繁的细节;如:copy文件、打包等等;用少量的代码,实现相当强大的功能;

Groovy的应用之: Gradle
这个构建工具就是基于Groovy来编写而成的,引入第三方库更为简洁;

开发环境的搭建

以为为Windows平台

  1. 当然是JDK的配置;
  2. 下载Groovy sdk,地址为:groovy sdk;下载好了,直接解压;
  3. 配置Groovy的环境变量; 建立GROOVY_HOME,值为上解压目录;
    编辑Path追加 %GROOVY_HOME%\bin
  4. 验证:在命令行输入:groovy -v提示OK,表示环境成功了;

Hello world的编写

命令行输入:groovyconsole 可进入Groovy自带的编写器,来体验一把!

如下:

Hello WorldHello World

当然了,我们肯定要使用 idea 这个东东;

略!

基础语法

1. 变量 OR 方法定义

使用 def 来定义变量,或者方法, 变量的定义不需要具体的类型;groovy的语句结束,不需要添加分号;程序根据上下文自动判断类型(真正的多态);

如下:

def a = 'hello'  
println(a)
def fun(c) {   // c 为动态类型
    println(c)
}   

// 创建对象:
def obj = new Object()   // 跟java类似

2.方法返回值

groovy 方法的最后一行即为方法的返回值,可省略掉return 语句;

    
    @Test
    void testFunc() {
        println(groovyFunc(1,2))        // 输出 1 2
    }

    def groovyFunc(arg1, arg2) {
        println arg1
        println arg2
        arg1 + " " + arg2    // 最后一行是返回值
    }

3.运算符重载

http://www.jianshu.com/p/d3eb904406bc

Groovy MetaClass

参考:http://www.blogjava.net/johnnyjian/archive/2010/03/19/315962.html
Metaclass就是Class的Class,Class定义了该类实例的行为,Metaclass则定义了该类及其实例的行为(http://en.wikipedia.org/wiki/Metaclass))。Groovy通过Metaclass使程序可以在运行时修改/添加类的方法、属性等(动态性)。

在Groovy中,每个Class都有一个对应的Metaclass,通过这个Metaclass可以给这个Class添加方法或属性:

示例:为String类添加新方法

 String.metaClass.capitalize = {  delegate[0].toUpperCase() + delegate[1..-1] }
 println("very".capitalize())  // 首字母大写

Groovy 列表、映射和范围

这是Groovy最常用的了;

链接:http://www.jianshu.com/p/4f5facc8d384

Groovy 闭包

http://www.jianshu.com/p/637e4d4b65a1

应用场景:DSL(这个非常重要);

XML 处理

http://www.jianshu.com/p/695507fcc24d

脚本特性

直接运行groovy脚本 (格式:groovy 文件全路径):
groovy在内存中编译代码并执行;

当然也可以先编译成class,通过 java 命令再运行

import java.io.*

println("Hello Groovy!")
println(new Date())

println("start copy ....")

def input = new File("C:/album_demo.mp4").newDataInputStream()
def output = new File("D:/1.mp4").newDataOutputStream()

output << input 
input.close()
output.close()

println("end copy")

后续

上一篇下一篇

猜你喜欢

热点阅读