gradle学習ノート(二)Grovy基礎


前言
gradle学習ノート(一)でgradle学習の基礎として言えば、GrouvyとDSLです.このノートは全部Groovyを勉強します.まずgroovyを紹介して、学習ステップを始めます.
profile:Groovy is a powerful、optinally typed and dynamic lagge、with static-typing and static complation capability、for the Java plot form aimed atving developer productivity productivity.thanks to a concity、ファミリーのダイナミックな機能です.Javaプラットフォームの中の簡潔で、慣れていて、学びやすい言語であり、開発者の効率を大いに高めています.
Grouvyはスクリプト言語に属します.Grouvyはより簡単で、より柔軟な文法を提供しており、実行時に動的にタイプ検査を行うことができます.
Groovyスクリプトが実行されると、GrovyはJavaクラスのバイトコードにコンパイルし、JVMによってJavaクラスを実行します.だから、実行する時、GrouvyコードはすでにJavaコードにコンパイルされていますので、JVMは自分で実行するのがGrouvyコードだとは全然分かりません.これはGrouvyの利用可能性を保証します.
インストールgroovy
公式サイトDownload groovyでは、公式サイトの手順でダウンロードしてインストールします.
自分で使うのはmacで、Homebrewがインストールされています.直接コマンドラインを入力してインストールします.
brew install groovy
インストール後にネーミングラインを入力してインストールするかどうかテストします.インストールが成功すれば現在のバージョンを出力します.
groovy -version
公式の上でdown Loadしてそのzipの包みをおりることができて、Grouvyのすべての文書はその中にあって、調べるのは便利な多いです.
Groovy基礎文法知識:
もっと多い文法の公式サイトを紹介します.
  • Grouvy注釈タグは、Javaと同様に、単一の行の注釈//、複数の行の注釈/* */、および文書の注釈/** */をサポートする.
  • Grouvy文は、セミコロン
  • を省略することができます.
  • Grouvyのすべての種類、方法などはすべてpublicで、別に指定しない限り.
  • Grouvyは、動的タイプをサポートし、defを使用して変数、方法を定義します.(Grouvyはタイプ推定を用いて判断する)
    def value = "this is a string";//String.Class
    def value = 1;//Integer.Class
    println value.class;
    
  • 関数を定義する場合、パラメータの種類を指定しなくてもいいです.
  • Grovyにおける関数の戻り値は、タイプであってもよい.
    def function(var1 , var2){
        ...
        varResult; //                       
    }
    
  • 関数戻りタイプが指定されているなら、defキーワード定義関数を追加する必要はないかもしれない.
    String function(var1 , var2){
        ...
        return "StringResult"; //                       
    }
    
  • もっと多いのはIBMがGrovyに精通していることを見てください.Grouvyをすぐに知ることができます.
  • もっと多いのはDifferences with Javaを見てください.GrouvyとJavaの違いを理解してください.
  • Grouvyの基本的なタイプを紹介します.
    1.基本データタイプ
    Groovyは世界中の全てのものを対象にしており、基本的なデータタイプはありません.だからJavaの中のbyte、int、bollan、charなどはすべてそれらの包装のタイプです.公式サイトではこのように説明しています.
    def a = 1
    assert a instanceof Integer
    
    // Integer.MAX_VALUE
    def b = 2147483647
    assert b instanceof Integer
    
    // Integer.MAX_VALUE + 1
    def c = 2147483648
    assert c instanceof Long
    
    // Long.MAX_VALUE
    def d = 9223372036854775807
    assert d instanceof Long
    
    // Long.MAX_VALUE + 1
    def e = 9223372036854775808
    assert e instanceof BigInteger
    2.容器類
    Grouvy Collection
    Groovyには容器類が三つあります.
  • Listリストは、JavaのArayList
  • に対応しています.
  • Mapキーテーブルは、JavaのLinked HashMap
  • に対応しています.
  • Range範囲、Listの拡張
  • 2.1リストリスト
    セットを作成します.Javaと同じです.
    (list1) //     
    def list3 =  ['a', 1, 'a', 'a', 2.5, 2.5f, 2.5d, 'hello', 7g, null, 9 as byte] //      ,      ,   null" data-snippet-id="ext.ef9a96ec26daf03a854730e0fce9d0de" data-snippet-saved="false" data-codota-status="done">def list = [5, 6, 7, 8] //    
    assert list[2] == 7 //     2  
    assert list instanceof java.util.List //   java.util.List
    
    def list2 = new ArrayList(list1) //     
    def list3 =  ['a', 1, 'a', 'a', 2.5, 2.5f, 2.5d, 'hello', 7g, null, 9 as byte] //      ,      ,   null
    要素を取得:
    def list = [1,'2',true,"stringFour",null];//    
    println list.size();//    
    
    
    try{
      list.get(-1);
    }catch(e){
      println(e.toString());
    }
    
    println list[-2];//     
    println list.getAt(-2);//  getAt()    ,     
    集合体中
    //     ,    each()  
    list.each{
      println "Item $it" //it      ,       
    }
    
    //    ,eachWithIndex()  
    list.eachWithIndex{it,i ->
      println("$i : $it");
    }
    2.2 Mapキーの値表[:]を使用してMapを作成します.
    def map = [name:"zhangsan", "sex":true, id:123];//  Map  
    println(map.size());
    
    //   
    println map.get("name");
    println map.name;
    
    //   
    map.addone = "addedOne";
    map.put("aa",false);
    Map巡回:
    // `entry` is a map entry
    map.each { entry ->
        println "Name: $entry.key Age: $entry.value"
    }
    
    // `entry` is a map entry, `i` the index in the map
    map.eachWithIndex { entry, i ->
        println "$i - Name: $entry.key Age: $entry.value"
    }
    
    // Alternatively you can use key and value directly
    map.each { key, value ->
        println "Name: $key Age: $value"
    }
    
    // Key, value and i as the index in the map
    map.eachWithIndex { key, value, i ->
        println "$i - Name: $key Age: $value"
    }
    2.3 Range類
    Ranges allow you to create a list of sequential values.The can be used as List since Range extens java.util.List.RangesはListの変形体であり、順序のある集合を作成するのに便利である.
  • は、..を使用して、左右に含まれるRange
  • を作成する.
  • は、..<を使用して左に含まれるものを作成し、右に含まれないものをRange
  • とする.
    Rangesを作成:
    def range = 5..8;//       Range
    range = 5..<8; //   8,  8
    
    println range.from +", " +range.to;
    Range巡回:
    //for    
    for (i in range) {
        println "Hello ${i}"
    }
    
    //each()    , List  
    (1..10).each { i ->
        println "Hello ${i}"
    }
    
    //    ,  switch   :
    switch (year) {
        case 1..10: interestRate = 0.076; break;
        case 11..25: interestRate = 0.052; break;
        default: interestRate = 0.037;
    }
    3.Grouvyガイドバッグ
    公式文書:Imports
    groovyデフォルトのコンダクタンス:
    import java.lang.*
    import java.util.*
    import java.io.*
    import java.net.*
    import groovy.lang.*
    import groovy.util.*
    import java.math.BigInteger
    import java.math.BigDecimal
    Grouvyがデフォルトでこれらのカバンを導いたと思っていますので、直接これらのカバンの種類を使うことができます.もっと多いパッケージ方式は公式文書を見てください.
    結語:
    基本的な文法とデータの種類が終わったら、Javaの中の小さなプログラムを書き始めます.フィボナッチの数列などを印刷します.でも、私たちはgradleのために基礎を作っています.脚本言語はgroovyよりいいです.はい、学習の過程で、groovyのあるところとpythonのようなところも発見されました.groovyを勉強した後、他のものは前倒しに相当すると思います.うん、いいです
    これからGroovyの難点とポイントを勉強します.gradleで一番多く使うのはそれです!!
    Groovy APIの別のドキュメント:Grovy JDK API Dcumenation
    学習コードはgithubにあります.