当前位置: 首页 > news >正文

Gradle Groovy 和 Kotlin kts 语法对比

Groovy 和 Kotlin kts 对比

1. 创建配置

下面是 Android 签名类型:

android {productFlavors {// 创建 prod 名的配置prod {}}
}
  • 在 kts 中,prod 可能需要显示调用: create("prod")
  • 在 groovy 中,基于 元编程 和 拦截机制,对于不存在 prod 的方法,会调用 invokeMethod(),最后调用 create 完成创建。

2. 赋值 和 调用

Groovy 中 prop 123 可以是 调用函数,也可以是 属性 赋值。
kts 中要处理:

  1. prop(123)
  2. prop = 123 或 setProp(123)
org.gradle.api.provider.Property

Property<T>get() set(T) 方法,Groovy赋值运算同样可以简化为:

prop = 123

  • kts 也可以=直接赋值,因为实现了 = 运算符重载:org.gradle.api.provider.Property<T>.assign(value: T?)
属性赋值
  • Groovy 只要有 setter或getter 方法,都可认作 属性,并且 set 可以有多个 类型。
  • 而 Kotlin setter/getter 类型一致时,才 作为属性。

以下对比下区别:

repositories {maven { url 'https://jitpack.io' }
}// get/setUrl 是 URI 类型, kts 则要写成
repositories {maven { setUrl("https://jitpack.io") }// 或maven { url = uri("https://jitpack.io") }
}

3. 方法调用 和 命名参数

Groovy 方法调用可以 省去 括号。
而 Kotlin 方法调用 则是 infix 函数才能省去括号。

常见的设置 gradle插件 代码:

// Groovy
apply plugin: 'java'
// 完整形式:apply(plugin: 'java')// kotlin
apply(plugin = "java")

4. 强类型

tasks.create 创建任务需要明确类型:

// Groovy 弱类型
tasks.create("copyFile") {}// Kotlin 强类型
tasks.create<Copy>("copyFile") {....
}

字段/方法 缺省调用

动态调用,maybeCreate

  1. 缺少方法,则会 调用 invokeMethod()methodMissing() 方法
  2. 缺少字段,则会 调用 getProperty()propertyMissing() 方法

缺省调用

文档参考

  • https://groovy-lang.org/objectorientation.html#properties
  • https://docs.groovy-lang.org/latest/html/documentation/#_methodmissing
  • https://docs.groovy-lang.org/latest/html/documentation/#_propertymissing
  • invokeMethod https://groovy-lang.org/single-page-documentation.html
  • Working with Gradle types
http://www.dtcms.com/a/550631.html

相关文章:

  • 做网站维护有什么要求物联网开发软件有哪些
  • 普陀做网站特色的岑溪网站开发
  • 对重庆电子政务网站建设评价wordpress模板里写php
  • 企业网站的网络营销功能包括还没做域名解析如何访问ftp的网站文件
  • 免费开网站自己家的电脑做网站需要备案没
  • 心理咨询网站后台学设计常用的网站
  • 安卓开发学习10-中级控件
  • 公司网站升级改版方案wordpress 一级目录
  • Rust 日志级别与结构化日志:从调试到生产的日志策略
  • 建英文网站有用吗自动外链发布工具
  • 从BSP到DFP和RTOS---专业的嵌入式开发工具Keil备忘
  • 【SpringBoot从初学者到专家的成长25】认识SpringBoot中的Spring Expression Language (SpEL)
  • IntelliJ IDEA配置Tomcat教程
  • 北京做网站建设的公司排名网页qq登陆保护在哪里
  • 广东省网站集约化建设做外贸如何建立网站
  • Rust 中的 if let 与 while let 语法糖:简化模式匹配的优雅工具
  • 基于GBR原理的叠腮技术生物学基础
  • 网站备案找哪个部门制作一个网站能多少钱
  • 汕头站扩建进展成都开发小程序的公司
  • 保健品 东莞网站建设欧米茄表官方官网
  • 郑州网站建设彳汉狮网络在线制图网
  • Rust Vec 的内存布局与扩容策略:从底层实现到性能优化
  • Hive 分区表变更字段长度不生效
  • 成都企业网站怎么做广东网络推广项目
  • 沈阳网站建设公司怎么样服装店的营销方法
  • 网站建设网络科技公司加盟水区建设局网站
  • 【企业SRE/DevOps向的精通Linux课程培训课程】第 18 天:Web 服务器(Apache、Nginx、反向代理)
  • 电商网站免费设计有关网站建设新闻资讯
  • 常用链地址 区块链常用浏览器地址
  • 手机网站推荐哪些提升关键词优化排名软件