Gradle学习-2 Groovy

news2024/10/6 18:32:10

1、Groovy基础语法

1.1、基本数据类型

  • Groovy支持数据类型:byte, short, int, long, float, double, char
(1)创建一个Android Studio项目
(2)在根目录新建一个 leon.gradle,输入以下内容

leon.gradle

/** 类型定义 **/
//byte 类型
byte b1 = 0
byte b2 = 1

//整型
int a = 10
def b = 20

//字符串
String str1 = "Hello"
def str2 = str1 + " World"

//列表
def array = [1,2,3,4]
array.add(5)

//映射表
def map = ["name":"冯宝宝", "sex":"woman"]

/** 输出 **/
//byte 类型
println("b1 = $b1")
println("b2 = $b2")
//整型
println("a = $a")
println("b = $b")
//字符串
println("str2 = ${str2.toUpperCase()}")
//列表
println("array is $array")
array.each {
    println("item is $it")
}
//映射表
println("map is $map")
println("name is ${map["name"]}")
(3)在 setting.gradle中引入test.gradle

在这里插入图片描述

(4)打开命令行

检查gradle版本

gradle -v

检查java版本

java -version

保证,gradle与java的版本匹配

执行build.gradle

./gradlew clean -q

输出结果
在这里插入图片描述

1.2、方法

方法定义

//不带返回值方法
def score = ["琦玉":61,"杰诺斯":99, "King":100, "索尼克":59]
def evaluate(Map<String, Integer> map){
    for (String name: map.keySet()){
        if (map[name] >= 60){
            println("$name: 及格")
        }else{
            println("$name: 不及格")
        }
    }
}
evaluate(score)



//带返回值方法
def add(int a, int b){
    return a+b;
}
def result = add(10, 23)
println("10 + 23 = $result")

执行结果
在这里插入图片描述

2、Groovy进阶语法

2.1、 DSL(Domain Specific Language)领域专用语言,只能用于构建配置,不能用于其他工作

在这里插入图片描述

2.2、闭包

  • 开放匿名代码块,可接收参数,有返回值,也可被分配给变量
  • 规则:{ [params ->] statements }
 //闭包
 {
     println("这是闭包A")
 }

//闭包赋值给变量
def c = {
    println("这是闭包B")
}
c()


 //闭包接收参数(1个参数,it可省略)
 def c2 = { it->
     println("闭包接收参数 it: $it")
 }
 c2("2024-06-25")


 //闭包接收参数(3个参数)
 def c3 = { name, age, sex->
     println("姓名:$name")
     println("年龄:$age")
     println("性别:$sex")
 }
 c3("地狱吹雪", 18, "女")

输出结果
在这里插入图片描述

2.3、类

//自定义DSL :identity
def identity = {
    id "120223827318"
    baseInfo {
        name "战栗的龙卷"
        age 26
        sex "女"
    }
}


//BaseInfo 类
class BaseInfo {
    private String name
    private int age
    private String sex


    def name(String name) {
        this.name = name
    }

    def age(int age) {
        this.age = age
    }

    def sex(sex) {
        this.sex = sex
    }

    @Override
    String toString() {
        return "BaseInfo {  name: $name,  age: $age,  sex: $sex  }"
    }
}


// Identity 类
class Identity {

    private String id
    private BaseInfo baseInfo


    //默认构造方法
    Identity() {
        baseInfo = new BaseInfo()
    }


    def id(id) {
        this.id = id
    }

    //入参是一个闭包
    def baseInfo(Closure closure) {
        //将闭包与类关联起来
        closure.setDelegate(baseInfo)
        closure.call()
    }

    @Override
    String toString() {
        return "Identity{  id: $id,   baseInfo: ${baseInfo.toString()}  }"
    }
}




//DSL与类关联
Identity i = new Identity()
identity.delegate = i
identity.call()

println("identity = ${i.toString()}")
println("姓名:${i.baseInfo.name}")

输出结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1862460.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Netty学习(二)——黏包半包、协议设计解析、聊天室

一、粘包与半包 1.1 粘包和半包复现 1、粘包复现&#xff1a; Server代码&#xff1a; public class ProblemServer {public static void main(String[] args) throws InterruptedException {new ServerBootstrap()//若是指定接收缓冲区大小&#xff1a;就会出现黏包、半包…

计算机基础知识——面向对象:封装+继承+多态整理

面向对象三大特性&#xff1a;封装、继承、多态。 1.封装 将一系列相关事物的共同的属性和行为提取出来&#xff0c;放到一个类中&#xff0c;同时隐藏对象的属性和实现细节&#xff0c;仅对外提供公共的访问方式。 【JavaBean类就可以看作是封装的完美案例。】 setter和get…

电磁兼容试验数据的单位转换 笔记

1. 单位dB 的介绍 分贝&#xff08;decibel&#xff0c;/dɛsɪ.bɛl/&#xff09;是量度两个相同单位之数量比例的计量单位&#xff0c;主要用于度量声音强度&#xff0c;常用dB表示。 分贝是较常用的计量单位。可表示为&#xff1a; 1. 表示功率量之比的一种单位&#xff0c…

作业6.20

1.已知网址www.hqyj.com截取出网址的每一个部分(要求&#xff0c;该网址不能存入文件中) 2.将配置桥接网络的过程整理成文档&#xff0c;发csdn 步骤i&#xff1a;在虚拟机设置中启用桥接模式 1. 打开VMware虚拟机软件。 2. 选择您想要配置的虚拟机&#xff0c;点击菜单栏中的“…

正版软件 | Copywhiz 6:革新您的文件复制、备份与管理体验

在数字化时代&#xff0c;文件管理的效率直接影响到我们的生产力。Copywhiz 6 最新版本&#xff0c;带来了前所未有的文件处理能力&#xff0c;让复制、备份和组织文件变得轻而易举。 智能选择&#xff0c;只复制更新内容 Copywhiz 6 的智能选择功能&#xff0c;让您只需几次点…

PDF编辑软件pdf转word工具Acrobat DC百度云盘分享

如大家所了解的&#xff0c;Adobe Acrobat DC是一款高级PDF文档编辑和管理软件&#xff0c;它整合了创建、编辑、共享和签署PDF文件的强大功能。这款软件为用户提供了一系列高效的工具&#xff0c;使得处理PDF文件变得异常简单&#xff0c;大幅提升办公效率。 Acrobat DC软件核…

【实用软件】Internet Download Manager(IDM6.41)下载及安装教程

​数据表明但是能够通过搭配下载的方式来使用IDM&#xff08;比如用迅雷离线下载&#xff0c;115离线&#xff0c;百度网盘等离线下载好的资源&#xff0c;然后结合HTTP协议的特性再用IDM下载&#xff09;能够达到事半功倍的效果。有目共睹的是IDM下载HTTP链接十分快&#xff0…

ctr/cvr预估之DeepFM模型

ctr/cvr预估之DeepFM模型 在数字营销的浪潮中&#xff0c;点击率&#xff08;CTR&#xff09;和转化率&#xff08;CVR&#xff09;预估已成为精准广告投放和个性化推荐系统的核心。随着深度学习技术的蓬勃发展&#xff0c;传统的机器学习方法&#xff0c;如逻辑回归和因子分解…

26.高级特性(上)

目录 一、不安全的Rust二、不安全的超能力2.1 概念2.2 解引用裸指针2.3 调用不安全的函数或方法2.3 创建不安全代码的安全抽象2.4 使用extern函数调用外部代码2.5 访问或修改可变静态变量2.6 实现不安全trait2.7 访问联合体中的字段 三、高级trait3.1 关联类型在trait定义中指定…

沙姆镜头标定与重建

沙姆定律&#xff08; Scheimpflug principle&#xff09;则可以保证测量平面的物体能够清晰成像&#xff0c; 因此能够起到调整景深区域位置的作用。Scheimpflug 镜头就是根据沙姆定律所设计的一种特殊的镜头&#xff0c;通过机械结构使镜头与相机本体发生一定程度的偏转&…

网络爬虫Xpath开发工具的使用

开发人员在编写网络爬虫程序时若遇到解析网页数据的问题&#xff0c;则需要花费大量的时间编 写与测试路径表达式&#xff0c;以确认是否可以解析出所需要的数据。为帮助开发人员在网页上直接 测试路径表达式是否正确&#xff0c;我们在这里推荐一款比较好用的 XPath 开发工…

vue:响应式原理解析,深入理解vue的响应式系统

一、文章秒读 vue的响应式系统核心有两个&#xff0c;简单描述就是&#xff1a; 1.在数据变化时重新render依赖相关函数&#xff08;组件&#xff09;。 2.在vue2和vue3中分别使用Object.defineProperty和Proxy进行对象属性的读写。 数据变化时&#xff1a; 二、什么是响应…

123.网络游戏逆向分析与漏洞攻防-邮件系统数据分析-收邮件功能的完善与优化

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

DDD学习笔记一

DDD的基本原则 &#xff08;1&#xff09;保持语言、模型、代码三者一致 语言&#xff1a;开发团队与领域专家沟通使用的自然语言。因为它与设计模型、代码是一致的&#xff0c;所以也称为通用语言。 模型&#xff1a;设计的输出物&#xff0c;是对领域逻辑的精准建模。模型会…

多供应商食品零售商城系统的会员营销设计和实现

在多供应商食品零售商城系统中&#xff0c;会员营销是提升用户粘性和增加销售的重要手段。一个有效的会员营销系统能够帮助平台更好地了解用户需求&#xff0c;提供个性化服务&#xff0c;进而提高用户满意度和忠诚度。本文将详细探讨多供应商食品零售商城系统的会员营销设计与…

LeetCode 算法:二叉树的层序遍历 c++

原题链接&#x1f517;&#xff1a;二叉树的层序遍历 难度&#xff1a;中等⭐️⭐️ 题目 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;roo…

工控必备C#

微软的C# 语言&#xff1f; QT 熟了以后,Qt 更方便些 方法Signal Slot 感觉上一样 现在更推荐PyQt 来构建,底层还是Qt C 的那些库,Qt 的开源协议有点狗

前端技术栈学习:Vue2、Vue cli脚手架、ElementUI组件库、Axios

1 基本介绍 &#xff08;1&#xff09;Vue 是一个前端框架, 易于构建用户界面 &#xff08;2&#xff09;Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或项目整合 &#xff08;3&#xff09;支持和其它类库结合使用 &#xff08;4&#…

Python——Flask开发框架基础使用介绍

目录 Flask简介 安装 Flask 创建一个简单的 Flask 应用 运行你的Flask应用 添加模板和静态文件 使用静态文件 处理表单和数据 使用 Flask 扩展 结论 Flask简介 Flask 是一个轻量级的 Python Web 框架&#xff0c;它以其简洁和灵活的特点广受欢迎。Flask 让开发者能够快…

Hi3861 OpenHarmony嵌入式应用入门--中断按键

本篇讲解gpio的中断使用方式。 硬件原理图如下&#xff0c;与上一篇一样的电路 GPIO API API名称 说明 hi_u32 hi_gpio_init(hi_void); GPIO模块初始化 hi_u32 hi_io_set_pull(hi_io_name id, hi_io_pull val); 设置某个IO上下拉功能。 hi_u32 hi_gpio_set_dir(hi_gpio_…