Groovy構文の概要

2959 ワード

Groovy構文の概要
GroovyはJavaと互換性があり、classファイルにコンパイルしてJVM上で実行できるJVM言語です.Javaに比べてGroovy構文は簡潔です.GradleコンストラクションツールはGroovy言語を使用して構成を記述します.
GroovyのString
GroovyのStringタイプはJavaのStringと似ていますが、$文字列テンプレートを使用して文字列をつなぐことができます.
b = "hello"
println "${b} world"

出力は次のとおりです.
hello world

GroovyのClosure閉パッケージ
GroovyにはClosure閉パッケージという特殊なタイプがあります.関数またはコードブロックのように、カッコ{}を使用してコードを包むことができます.
パッケージを閉じる一般的な宣言は次のとおりです.
{ parameters ->
   code
}

パラメータ->コードを持つ形式がわかります.
例を次に示します.
def test = {
    a, b -> println "a=${a} b=${b}, a closure"
}

test 1, 2

出力は次のとおりです.
a=1 b=2, a closure

閉パッケージにパラメータが指定されていない場合、隠しパラメータitがあります.
def test = {
    println "default=${it}, a closure"
}

test 1

出力は次のとおりです.
default=1, a closure

GroovyのList(リスト)
List使用中括弧は以下のように定義される.
def aList = [1, 2.0, "hello", false]

println aList[3]
println aList[-1]
println aList[4]

出力は次のとおりです.
false
false
null

GroovyのListは複数種類混在可能であることが分かる.
リストの要素を下付きで取得する場合、順方向(下付きは正数)または逆方向(下付きは負数)で取得できます.
下付きスケールが境界を越えた場合、取得した要素は存在しないと判断しnullを返します.
GroovyのMap(辞書)
GroovyのMap定義は次のとおりです.
def aMap = ["id": 1, "name": "groovy", "isJava": false]

aMap.each {
    println "key:${it.key}, value:${it.value}"
}

出力は次のとおりです.
key:id, value:1
key:name, value:groovy
key:isJava, value:false

Groovyのmapは、String:Objectの要素が保存されているキー値ペアの形式であることがわかります.
eachメソッドを使用してmapを遍歴すると、eachは閉パケットを受け入れます.閉パケットにパラメータがない場合、デフォルトではitパラメータがあり、mapを反復するために使用できます.
Groovy File操作
GroovyのFile操作は非常に簡潔です.
次のコードは、現在のディレクトリのfile.groovyファイルを読み込み、各行を印刷します.
def file = new File("file.groovy")

file.eachLine {line -> println "${line}"}

出力は次のとおりです.
package groovysamples

def file = new File("file.groovy")
file.eachLine {line -> println "${line}"}

println("this is file.groovy")

file.groovyファイルの各行のコードが印刷されていることがわかります.
Groovyの==とis
Groovyの==Javaのequals,すなわち両者の値が等しい.GroovyのisはJavaの==つまり同じオブジェクトに相当する.
class People {
    String name

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

    boolean equals(o) {
        if (this.is(o)) return true
        if (getClass() != o.class) return false

        People people = (People) o

        if (name != people.name) return false

        return true
    }

    int hashCode() {
        return (name != null ? name.hashCode() : 0)
    }
}

def p1 = new People("groovy")
def p2 = new People("groovy")

println p1 == p2
println p1.is(p2)

出力は次のとおりです.
true
false