関数とラムダ式の基本と応用:Kotlinで効率的にコードを書く方法【Kotlin入門③】

Kotlinにおける関数の基本

Kotlinでは関数を活用することで、コードを効率的に記述し、再利用性を向上させることができます。Kotlinの関数はシンプルに書くことができ、さまざまな方法で定義できます。

関数の定義と呼び出し

関数はfunキーワードを使って定義します。

fun greet(name: String): String {
    return "Hello, $name!"
}

fun main() {
    println(greet("Kotlin"))
}

この例では、greet関数を定義し、名前を引数に受け取って挨拶のメッセージを返します。

戻り値を省略するシンプルな関数

Kotlinでは単一式の関数(関数の処理が1行で完結する場合)は、= を使って簡潔に記述できます。

fun square(x: Int) = x * x

この関数は、引数xの2乗を計算して返します。

デフォルト引数と名前付き引数

デフォルト引数

Kotlinでは関数の引数にデフォルト値を設定できます。これにより、引数が渡されなかった場合のデフォルトの動作を指定できます。

fun greet(name: String = "Guest") {
    println("Hello, $name!")
}

この関数は、引数が渡されなかった場合に”Guest”をデフォルト値として使用します。

greet()  // 出力: Hello, Guest!
greet("Alice")  // 出力: Hello, Alice!

名前付き引数

引数が複数ある場合、名前を指定して渡すことができます。

fun introduce(name: String, age: Int) {
    println("My name is $name and I am $age years old.")
}

introduce(age = 30, name = "Bob")

このようにすると、引数の順番を間違える心配がなくなります。

ラムダ式の基本

ラムダ式とは?

Kotlinではラムダ式(無名関数)を使って、簡潔に関数を表現できます。

val square: (Int) -> Int = { x -> x * x }
println(square(4)) // 出力: 16

この例では、squareという変数にラムダ式を代入し、xを引数としてx * xを返す関数を定義しています。

型推論を活用したラムダ式

Kotlinの型推論により、ラムダ式の型を省略できます。

val square = { x: Int -> x * x }

また、引数が1つの場合はitキーワードを使うことで、さらに簡潔に書くことができます。

val square: (Int) -> Int = { it * it }

高階関数と関数の引数としてのラムダ式

高階関数とは?

高階関数とは、関数を引数に取ったり、関数を戻り値として返す関数のことです。

fun applyOperation(x: Int, operation: (Int) -> Int): Int {
    return operation(x)
}

fun main() {
    val result = applyOperation(5) { it * 2 }
    println(result) // 出力: 10
}

この例では、applyOperation関数に数値とラムダ式を渡し、その処理を適用しています。

map・filterを活用する

Kotlinの標準ライブラリには、ラムダ式と相性の良いmapfilterといった関数があります。

val numbers = listOf(1, 2, 3, 4, 5)
val squaredNumbers = numbers.map { it * it }
println(squaredNumbers) // 出力: [1, 4, 9, 16, 25]

mapを使うことで、リストの各要素に関数を適用できます。

また、条件に合致する要素だけを抽出するfilterも便利です。

val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers) // 出力: [2, 4]

まとめ

本記事では、Kotlinにおける関数とラムダ式の基本を解説しました。Kotlinの関数はシンプルで強力な機能を持ち、ラムダ式を活用することでコードをより簡潔に記述できます。

次回は、Kotlinのクラスやオブジェクト指向プログラミングについて詳しく解説します!