Groovy のよく使われる文法
Groovy は Java プラットフォーム上に構築された柔軟なプログラミング言語で、Python や Ruby、Smalltalk の強力な機能を多数取り入れています。以下では、Groovy のよく使われる文法を紹介し、素早く使いこなせるようサポートします。
変数の宣言
Groovy では、変数の宣言に def キーワードを使用するほか、型を明示的に指定することもできます。
// def キーワードを使用
def name = "Groovy"
// 型を明示的に指定
String greeting = "Hello, ${name}!"データ型
Groovy は整数型、浮動小数点型、ブール型、文字列など、さまざまなデータ型をサポートしています。
def a = 10 // 整数型
def b = 10.5 // 浮動小数点型
def c = true // ブール型
def d = "Groovy" // 文字列論理演算
Groovy では、&&(論理積)、||(論理和)、!(論理否定)などの論理演算子が使用できます。
def a = 10
def b = 20
if (a > 0 && b > 0) {
println "両方の数は正数です"
} else if (a > 0 || b > 0) {
println "少なくとも一方の数は正数です"
} else {
println "両方の数は非正数です"
}条件文
Groovy では、if-else や switch の条件文が利用できます。
def number = 10
if (number > 0) {
println "数は正数です"
} else {
println "数は非正数です"
}
switch (number) {
case 0:
println "数はゼロです"
break
case { it > 0 }:
println "数は正数です"
break
default:
println "数は負数です"
}繰り返し文
Groovy では、for、while、do-while の繰り返し文がサポートされています。
// for 文
for (i in 0..9) {
println i
}
// while 文
def i = 0
while (i < 10) {
println i++
}
// do-while 文
def j = 0
do {
println j++
} while (j < 10)文字列
文字列の連結
Groovy では、+ 演算子や ${} 構文を使って文字列を連結できます。
def name = "Groovy"
def greeting = "Hello, " + name + "!"
println greeting // 出力: Hello, Groovy!
def greeting2 = "Hello, ${name}!"
println greeting2 // 出力: Hello, Groovy!文字列の切り出し
substring メソッドを使って文字列の一部を切り出すことができます。
def str = "Hello, Groovy!"
println str.substring(7) // 出力: Groovy!
println str.substring(0, 5) // 出力: Hello文字列の置換
replace メソッドを使って文字列内の特定の部分を置き換えることができます。
def str = "Hello, Groovy!"
println str.replace("Groovy", "Java") // 出力: Hello, Java!文字列の分割
split メソッドを使って文字列を配列に分割できます。
def str = "Hello, Groovy!"
def parts = str.split(", ")
println parts[0] // 出力: Hello
println parts[1] // 出力: Groovy!文字列の分割と要素の取得
tokenize メソッドを使って文字列をリストに分割し、インデックスで特定の部分にアクセスできます。
def str = "Hello, Groovy!"
println str.tokenize(",")[1] // 出力: Groovy!文字列の空白除去
trim メソッドを使って文字列両端の空白文字を削除できます。
def str = " Hello, Groovy! "
println str.trim() // 出力: Hello, Groovy!文字列の長さ
length プロパティを使って文字列の長さを取得できます。
def str = "Hello, Groovy!"
println str.length() // 出力: 14文字列の包含判定
contains メソッドを使って、文字列内に特定のサブストリングが含まれるかどうかを確認できます。
def str = "Hello, Groovy!"
println str.contains("Groovy") // 出力: true文字列の位置検索
indexOf メソッドを使って、文字列内での特定のサブストリングの位置を調べることができます。
def str = "Hello, Groovy!"
println str.indexOf("Groovy") // 出力: 7文字列の比較
==、!=、<、>、<=、>= などの演算子を使って文字列同士の比較が可能です。
def str1 = "Hello, Groovy!"
def str2 = "Hello, Java!"
println str1 == str2 // 出力: false
println str1 != str2 // 出力: true
println str1 < str2 // 出力: true
println str1 > str2 // 出力: false
println str1 <= str2 // 出力: true
println str1 >= str2 // 出力: false文字列のエスケープ
特殊文字をエスケープするには \ を使用します。例えば、\n は改行を表します。
def str = "Hello,\nGroovy!"
println str // 出力: Hello,
// Groovy!文字列のテンプレート
Groovy では、${} 構文を使って文字列内に変数を埋め込むことができます。
def name = "Groovy"
def greeting = "Hello, ${name}!"
println greeting // 出力: Hello, Groovy!文字列の正規表現によるマッチング
==~ 演算子を使って正規表現によるマッチングが可能です。
def emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
def str = "google@163.com"
println str ==~ emailPattern // 出力: true複数行の文字列
三重引用符 """ や ''' を使って複数行の文字列を定義できます。
def multiLineStr = """
This is a multi-line
string in Groovy.
"""
println multiLineStrリスト(List)
Groovy では、リスト(List)は異なる型の要素を含むことができる一般的なデータ構造です。以下は、Groovy のリスト操作に関するよく使われる文法です。
リストの定義
角括弧 [] を使ってリストを定義できます。
def list = [1, 2, 3, 'Groovy', true]リスト要素へのアクセス
インデックスを使ってリストの要素にアクセスできます。インデックスは 0 から始まります。
def list = [1, 2, 3, 'Groovy', true]
println list[3] // 出力: Groovyリスト要素の変更
インデックスを使ってリストの要素を変更できます。
def list = [1, 2, 3, 'Groovy', true]
list[3] = 'Java'
println list // 出力: [1, 2, 3, 'Java', true]要素の追加
add メソッドや左シフト演算子 << を使ってリストに要素を追加できます。
def list = [1, 2, 3]
list.add(4)
println list // 出力: [1, 2, 3, 4]
list << 5
println list // 出力: [1, 2, 3, 4, 5]要素の削除
remove メソッドを使ってリストから要素を削除できます。
def list = [1, 2, 3, 4, 5]
list.remove(0)
println list // 出力: [2, 3, 4, 5]リストの長さ
size メソッドを使ってリストの長さを取得できます。
def list = [1, 2, 3, 4, 5]
println list.size() // 出力: 5リストの走査
for ループを使ってリストの各要素を順に処理できます。
def list = [1, 2, 3, 4, 5]
for (item in list) {
println item
}また、each メソッドを使ってリストの要素を走査することもできます。
def list = [1, 2, 3, 4, 5]
list.each { println it }リストの変換
collect メソッドを使ってリストの各要素を変換できます。
def list = [1, 2, 3, 4, 5]
def newList = list.collect { it * 2 }
println newList // 出力: [2, 4, 6, 8, 10]リストのフィルタリング
find
条件を満たす最初の要素を返します。
def list = [1, 2, 3, 4, 5]
println list.find { it % 2 == 0 } // 出力: 2findAll
条件を満たすすべての要素からなる新しいリストを返します。
def list = [1, 2, 3, 4, 5]
def newList = list.findAll { it % 2 == 0 }
println newList // 出力: [2, 4]リストのマッチング
any
条件を満たす要素が少なくとも一つ存在するかをチェックします。
def list = [1, 2, 3, 4, 5]
println list.any { it % 2 == 0 } // 出力: trueevery
条件を満たす要素がすべて存在するかをチェックします。
def list = [1, 2, 3, 4, 5]
println list.every { it % 2 == 0 } // 出力: falseリストのスライス
subList メソッドを使ってリストの一部を取り出すことができます。
def list = [1, 2, 3, 4, 5]
println list.subList(1, 4) // 出力: [2, 3, 4]リストの並べ替え
sort メソッドを使ってリストを並べ替えることができます。
def list = [3, 1, 4, 2, 5]
println list.sort() // 出力: [1, 2, 3, 4, 5]リストの逆転
reverse メソッドを使ってリストを逆転させることができます。
def list = [1, 2, 3, 4, 5]
println list.reverse() // 出力: [5, 4, 3, 2, 1]リストの包含判定
contains メソッドを使って、リストに特定の要素が含まれるかどうかを確認できます。
def list = [1, 2, 3, 4, 5]
println list.contains(3) // 出力: true
println list.contains(6) // 出力: falseリストの結合
plus メソッドや + 演算子を使って二つのリストを結合できます。
def list1 = [1, 2, 3]
def list2 = [4, 5, 6]
println list1.plus(list2) // 出力: [1, 2, 3, 4, 5, 6]
println list1 + list2 // 出力: [1, 2, 3, 4, 5, 6]リストの空にする
clear メソッドを使ってリストを空にすることができます。
def list = [1, 2, 3, 4, 5]
list.clear()
println list // 出力: []マップ(Map)
Groovy では、マップ(Map)はキーと値のペアを格納するための一般的なデータ構造です。以下は、Groovy のマップ操作に関するよく使われる文法です。
マップの定義
角括弧 [:] や中括弧 {} を使ってマップを定義できます。
def map = [:]
map = ["name": "Groovy", "version": 2.5]マップ要素へのアクセス
キーを使ってマップの値にアクセスできます。
def map = ["name": "Groovy", "version": 2.5]
println map["name"] // 出力: Groovyマップ要素の変更
キーを使ってマップの値を変更できます。
def map = ["name": "Groovy", "version": 2.5]
map["name"] = "Java"
println map // 出力: [name:Java, version:2.5]要素の追加
put メソッドや直接代入を使ってマップに要素を追加できます。
def map = ["name": "Groovy"]
map.put("version", 2.5)
println map // 出力: [name:Groovy, version:2.5]
map["author"] = "James"
println map // 出力: [name:Groovy, version:2.5, author:James]要素の削除
remove メソッドを使ってマップから要素を削除できます。
def map = ["name": "Groovy", "version": 2.5]
map.remove("version")
println map // 出力は [name:Groovy]マップのサイズ
size メソッドを使用して、マップのサイズを取得できます。
def map = ["name": "Groovy", "version": 2.5]
println map.size() // 出力は 2マップの反復処理
each メソッドを使って、マップ内のキーと値のペアを反復処理できます。
def map = ["name": "Groovy", "version": 2.5]
map.each { key, value ->
println "${key}: ${value}"
}キーまたは値の存在確認
containsKey および containsValue メソッドを使用して、マップに特定のキーまたは値が含まれているかどうかを確認できます。
def map = ["name": "Groovy", "version": 2.5]
println map.containsKey("name") // 出力は true
println map.containsValue(2.5) // 出力は trueマップのクリア
clear メソッドを使用して、マップを空にすることができます。
def map = ["name": "Groovy", "version": 2.5]
map.clear()
println map // 出力は [:]マップの結合
putAll メソッドを使用して、あるマップのすべての要素を別のマップに追加できます。
def map1 = ["name": "Groovy"]
def map2 = ["version": 2.5]
map1.putAll(map2)
println map1 // 出力は [name:Groovy, version:2.5]全てのキーまたは値の取得
keySet および values メソッドを使用して、マップ内の全てのキーまたは値を取得できます。
def map = ["name": "Groovy", "version": 2.5]
println map.keySet() // 出力は [name, version]
println map.values() // 出力は [Groovy, 2.5]関数
Groovy では、関数はメソッド(Method)と呼ばれ、クラス内やスクリプトの一部として定義できます。以下に、Groovy の関数定義および呼び出しに関する一般的な構文を示します。
関数の定義
def キーワードを使用して関数を定義できます。
def greet(name) {
return "Hello, ${name}!"
}関数の呼び出し
関数を定義した後は、関数名と引数を指定して呼び出すことができます。
def result = greet("Groovy")
println result // 出力は Hello, Groovy!デフォルト引数を持つ関数
関数を定義する際に、引数にデフォルト値を設定できます。
def greet(name = "World") {
return "Hello, ${name}!"
}
println greet() // 出力は Hello, World!
println greet("Groovy") // 出力は Hello, Groovy!複数の引数を持つ関数
複数の引数を受け取る関数を定義できます。
def add(a, b) {
return a + b
}
println add(3, 5) // 出力は 8匿名関数
匿名関数を定義し、変数に代入したり、引数として渡したりできます。
def multiply = { a, b -> a * b }
println multiply(3, 5) // 出力は 15可変引数を持つ関数
可変数の引数を受け取る関数を定義できます。
def sum(... numbers) {
def total = 0
for (number in numbers) {
total += number
}
return total
}
println sum(1, 2, 3, 4) // 出力は 10クロージャを引数とする関数
クロージャ(Closure)を引数として受け取る関数を定義できます。
def operate(a, b, closure) {
return closure(a, b)
}
def add = { x, y -> x + y }
println operate(3, 5, add) // 出力は 8複数の値を返す関数
複数の値を返す関数を定義できます。戻り値はリストとして扱われます。
def getCoordinates() {
return [10, 20]
}
def (x, y) = getCoordinates()
println "x: ${x}, y: ${y}" // 出力は x: 10, y: 20再帰関数
関数内部で自身を再帰的に呼び出す再帰関数を定義できます。
def factorial(n) {
if (n <= 1) {
return 1
} else {
return n * factorial(n - 1)
}
}
println factorial(5) // 出力は 120