关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 安卓开发 »Gradle for Android 第七篇( Groovy入门 )

    Gradle for Android 第七篇( Groovy入门 )

    2016-01-10 00:00:00 出处:segmentfault
    分享

    迄今为止,我们已经学些了众多gradle构建的概念以及如何运行tasks。在这一章,我们将对这些概念有一个更深的理解,然后开始构建我们自己的tasks。一旦我们掌握了如何编写自定义tasks,那么我们就可以试着编写自己的插件,以达到在多个项目中复用的目的。

    在我们创建传统tasks之前,我们有必要了解些Groovy的基本语法。因为这理解Groovy如何运行会使得我们能更好的理解tasks和插件。理解Groovy同样帮助我们理解Gradle如何工作,以及为什么这些配置文件需要这样配置。

    Gradle for Android 第一篇( 从 Gradle 和 AS 开始 )

    Gradle for Android 第二篇( Build.gradle入门 )

    Gradle for Android 第三篇( 依赖管理 )

    Gradle for Android 第四篇( 构建变体 )

    Gradle for Android 第五篇( 多模块构建 )

    Gradle for Android 第六篇( 测试)

    在这一章,我们将会遵循以下主题:

    理解Groovy 重新认识tasks Hooking Android插件 编写自定义插件

    理解Groovy

    大部分Android开发者也是名Java开发者,和Java对比,Groovy也是运行在JVM上。当然,假如你是名Java开发者,那么Groovy将会变得容易阅读,但是在编写你自己的Groovy代码之前,你必须对Groovy有一个全面的了解。

    简介

    Groovy起源于Java,其运行在JVM上。其目标是创造更简单,更直接的语言,不仅仅在脚本语言上或者编译语言上运行。通过这一章节,我们将对Groovy和Java进行对比。

    在Java中,打印一天String应该是这样的:

    System.out.println("Hello, world!");

    在Groovy中,你可以这么写:

    println 'Hello, world!'

    你应该主要到几点不同之处:

    没有了System.out 没有了方括号 列结尾没有了;

    这个例子同样使用了单引号,你可以使用双引号或者单引号,但是他们有不同的用法。双引号可以包含插入语句。插入是计算一个字符串包含placeholders的过程,并将placeholders的值替换,这些placeholder可以是变量甚至是方法。Placeholders必须包含一个方法或者变量,并且其被{}包围,且其前面有$修饰。假如其只有一个单一的变量,可以只需要$。下面是一些基本的用法:

    def name = 'Andy'
    def greeting = "Hello, $name!"
    def name_size "Your name is ${name.size()} characters long."

    greeting应该是“ Hello,Andy”,并且 name_size 为 Your name is 4 characters long.string的插入可以让你更好的动态执行代码。比如

     def method = 'toString'
     new Date()."$method"()

    这在Java中看起来很奇怪,但是这在groovy里是合法的。

    Classes和members

    Groovy里面创建类和Java类似,举个例子:

    class MyGroovyClass {
           String greeting
           String getGreeting() {
               return 'Hello!'
            } 
    }

    注意到不论是类名还是成员变量都没有修饰符。其默认的修饰符是类和方法为public,成员变量为private。

    当你想使用MyGroovyClass,你可以这样实例化:

    def instance = new MyGroovyClass()
    instance.setGreeting 'Hello, Groovy!'
    instance.getGreeting()

    你可以利用def去创建变量,一旦你为你的类创建了实例,你就可以操作其成员变量了。get/set方法groovy默认为你添加 。你甚至可以覆写它。

    假如你想直接使用一个成员变量,你可以这么干:

     println instance.getGreeting()
     println instance.greeting

    而这二种方式都是可行的。

    方法

    和变量一样,你不必定义为你的方法定义返回类型。举个例子,先看java:

    public int square(int num) {
           return num * num;
    } 
    square(2);

    你需要将该方法定义为public,需要定义返回类型,以及入参,最后你需要返回值。

    我们再看下Groovy的写法:

     def square(def num) {
           num * num
     }
     square 4

    没有了返回类型,没有了入参的定义。def代替了修饰符,方法体内没有了return关键字。然而我还是建议你使用return关键字。当你调用该方法时,你不需要括号和分号。

    我们设置可以写的更简单点:

    def square = { num ->
           num * num
    }
    square 8

    ###闭包

    闭包是一段匿名的方法体,其可以接受参数和返回值。它们可以定义变量或者可以将参数传给方法。

    你可以简单的使用方括号来定义闭包,假如你想详细点,你也可以这么定义:

    Closure square = {
           it * it
    }
    square 16

    添加了Closure,让其更加清晰。注意,当你没有显式的为闭包添加一个参数,groovy会默认为你添加一个叫做it。你可以在所有的闭包中使用it,假如调用者没有定义任何参数,那么it将会是null,这会使得你的代码更加简洁。

    在grade中,我们经常使用闭包,例如Android代码体和dependencies也是。

    Collections

    在groovy中,有二个重要的容器分别是lists和maps。

    创建一个list很容易,我们不必初始化:

    List list = [1, 2, 3, 4, 5]

    为list迭代也很简单,你可以使用each方法:

    list.each() { element ->
           println element
    }

    你甚至可以使得你的代码更加简洁,使用it:

    list.each() {
           println it
    }

    map和list差不多:

    Map pizzaPrices = [margherita:10, pepperoni:12]

    假如你想取出map中的元素,可以使用get方法:

    pizzaPrices.get('pepperoni')
    pizzaPrices['pepperoni']

    同样的groovy有更简单的方式:

    pizzaPrices.pepperoni

    是不是简单到爆,瞬间感觉Java太复杂的有木有。下一章我们将学习Groovy在Gradle中的使用情况,相信你会喜欢!

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    正版 Windows 11产品密钥怎么查找/查看?

    还有3个月,微软将停止 Windows 10 的更新

    Windows 10 终止支持后,企业为何要立即升级?

    Windows 10 将于 2025年10 月终止技术支持,建议迁移到 Windows 11

    Windows 12 发布推迟,微软正全力筹备Windows 11 25H2更新

    Linux 退出 mail的命令是什么

    Linux 提醒 No space left on device,但我的空间看起来还有不少空余呢

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术热点

    SQL汉字转换为拼音的函数

    windows 7系统无法运行Photoshop CS3的解决方法

    巧用MySQL加密函数对Web网站敏感数据进行保护

    MySQL基础知识简介

    Windows7和WinXP下如何实现不输密码自动登录系统的设置方法介绍

    windows 7系统ip地址冲突怎么办?windows 7系统IP地址冲突问题的

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。