Groovy構文の概要
Groovy構文の概要
GroovyはJavaと互換性があり、classファイルにコンパイルしてJVM上で実行できるJVM言語です.Javaに比べてGroovy構文は簡潔です.GradleコンストラクションツールはGroovy言語を使用して構成を記述します.
GroovyのString
GroovyのStringタイプはJavaのStringと似ていますが、$文字列テンプレートを使用して文字列をつなぐことができます.
出力は次のとおりです.
GroovyのClosure閉パッケージ
GroovyにはClosure閉パッケージという特殊なタイプがあります.関数またはコードブロックのように、カッコ{}を使用してコードを包むことができます.
パッケージを閉じる一般的な宣言は次のとおりです.
パラメータ->コードを持つ形式がわかります.
例を次に示します.
出力は次のとおりです.
閉パッケージにパラメータが指定されていない場合、隠しパラメータitがあります.
出力は次のとおりです.
GroovyのList(リスト)
List使用中括弧は以下のように定義される.
出力は次のとおりです.
GroovyのListは複数種類混在可能であることが分かる.
リストの要素を下付きで取得する場合、順方向(下付きは正数)または逆方向(下付きは負数)で取得できます.
下付きスケールが境界を越えた場合、取得した要素は存在しないと判断しnullを返します.
GroovyのMap(辞書)
GroovyのMap定義は次のとおりです.
出力は次のとおりです.
Groovyのmapは、String:Objectの要素が保存されているキー値ペアの形式であることがわかります.
eachメソッドを使用してmapを遍歴すると、eachは閉パケットを受け入れます.閉パケットにパラメータがない場合、デフォルトではitパラメータがあり、mapを反復するために使用できます.
Groovy File操作
GroovyのFile操作は非常に簡潔です.
次のコードは、現在のディレクトリのfile.groovyファイルを読み込み、各行を印刷します.
出力は次のとおりです.
file.groovyファイルの各行のコードが印刷されていることがわかります.
Groovyの==とis
Groovyの==Javaのequals,すなわち両者の値が等しい.GroovyのisはJavaの==つまり同じオブジェクトに相当する.
出力は次のとおりです.
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