ABlueCat
本帖最后由 dengyu 于 2020-10-25 15:04 编辑

gradle使用教程及谈谈ForgeGradle
(四)groovy脚本特性

一、groovy介绍
       Groovy是一种基于JVM的面向对象的成熟的程序设计语言一堆形容词= =,和Java语言语法很相似,但是极大地简化了编写中“不必要”的代码,同时也吸收了Ruby、Python和Smalltalk的特性(博采众长才好嘛),因此对于Java开发者来说学习难度很低,极易入手。因此,为节约篇幅及各位阅读时间,我将不准备介绍和Java极为相似的部分,而向大家展示它具有而Java没有的魅力。
二、动态类型推断
       Groovy是一个支持动态类型推断的语言,在定义变量名的时候不需要显式地指明其类型,编译器/解释器将会根据语句推断变量的类型,定义一个变量我们只需要这样写:
def 变量名 [= 内容]

   下面我用一个实例来详细讲解:
       这个a变量的类型将会被自动推断,同时a变量可以被赋值成其他类型的内容,这将导致a的类型发生改变。
       不过,Groovy依然是强类型的语言,因为一旦有一个没有被定义两种类型变量的相加行为发生时,将会报错,如下图:
       当然如果你觉得更喜欢显式指明类型,如String a = 'abc'也是完全可以的!
三、闭包
       Groovy中的闭包是开放,匿名的代码块,这个代码块是可以接受参数并可以返回返回值的。
       闭包的定义
       定义一个闭包很简单:
  1. {[参数1, 参数2 -> ]代码}
复制代码
      并且一个闭包是一个Closure类型的对象,可以赋值给变量并且可以传递。
       图中hello任务中调用了一次闭包,之后传递到again方法里面再次进行调用。同时由于again方法中的参数a类型可以被推断,IDEA为我们推断出了其类型并标在左边。
       因此,这个东西用着不方便吗?
     带参闭包与闭包的调用
       如果我们的闭包需要参数,只需要按照定义来就行了
       图中定义了一个带参fun闭包,参数为a, b。但是此时由于上下文没有任何迹象可以推断出a, b的类型,因此IDEA给出了一个weak warning。我们可以很清楚地看到闭包有两种调用方式:直接调用和通过call()方法调用。



来自群组: PluginsCDTribe