Kotlinのラムダ式と通常関数の使い分けポイントをやさしく解説!初心者でも理解できる関数の選び方
生徒
「Kotlinのラムダ式って何ですか?普通の関数とはどう違うんでしょうか?」
先生
「ラムダ式は、簡単にいうと“名前のない関数”のことです。関数をその場でパッと書いて使える便利な方法なんです。」
生徒
「名前がない関数って、どういうときに使うんですか?普通の関数とどう使い分けるのか知りたいです。」
先生
「いいですね。それでは、Kotlinの通常関数とラムダ式の違いや、どんな場面で使い分ければいいのかを一緒に見ていきましょう!」
1. Kotlinの関数とは?まずは通常の関数を理解しよう
Kotlin(コトリン)では、「関数(Function)」とは、何かの処理をまとめておくための“命令のかたまり”です。例えば、「画面に文字を表示する」「足し算をする」などの処理を関数としてまとめておくことで、プログラムをスッキリ書くことができます。
通常の関数は、funというキーワードを使って名前をつけて定義します。
fun sayHello() {
println("こんにちは!")
}
このように書いておけば、あとからsayHello()と書くだけで、同じ処理を何回でも呼び出すことができます。
2. ラムダ式とは?名前のない関数
次に、Kotlinの「ラムダ式(Lambda Expression)」を見てみましょう。ラムダ式は、名前をつけずにその場で関数のような処理を書くための書き方です。
たとえば、次のように書きます。
val greet = { println("こんにちは!") }
greet()
ここではval greetにラムダ式を代入しています。{ println("こんにちは!") }がラムダ式です。
ラムダ式は、使いたい場所にパッと書いて渡すことができるので、コードを短くスッキリ書きたいときに便利です。
3. 引数ありのラムダ式と通常関数の比較
次に、引数(ひきすう)を使った例で、ラムダ式と通常関数の違いを比べてみましょう。
まずは通常の関数です。
fun add(a: Int, b: Int): Int {
return a + b
}
println(add(3, 5))
同じ処理をラムダ式で書くと、次のようになります。
val add = { a: Int, b: Int -> a + b }
println(add(3, 5))
この->の左側が引数、右側が処理です。書き方は違いますが、やっていることは同じですね。
4. ラムダ式と通常関数の使い分けポイント
では、どんなときにラムダ式を使い、どんなときに通常関数を使うべきなのでしょうか?
● 通常関数を使うのに向いている場面
- 何度も使いたい処理をまとめたいとき
- 処理が長くて、読みやすさを重視したいとき
- 名前をつけて意味をわかりやすくしたいとき
例えば「商品の価格を計算する」「ログイン処理を行う」など、意味がはっきりしていて再利用する場合は、通常関数が向いています。
● ラムダ式を使うのに向いている場面
- 一時的に使う簡単な処理を渡したいとき
- 処理の内容を他の関数に引数として渡したいとき
- コードを短くスッキリ書きたいとき
特に「リストの並び替え」や「フィルター処理」など、データに対して一時的な操作をする場面でよく使われます。
5. 実例:ラムダ式を使ってリストを操作する
Kotlinでは、filterやmapなどの関数にラムダ式を渡すことで、リスト(複数のデータ)を簡単に操作できます。
次の例は、偶数だけを取り出すコードです。
val numbers = listOf(1, 2, 3, 4, 5, 6)
val even = numbers.filter { it % 2 == 0 }
println(even)
filterにラムダ式{ it % 2 == 0 }を渡すことで、条件に合うものだけを取り出せます。
6. ラムダ式が使えない場面と注意点
便利なラムダ式ですが、すべての場面で使えるわけではありません。次のような注意点があります。
- 複雑な処理を書くと読みづらくなる
- 再利用しにくい(使い回しにくい)
- 特定の関数の外では使いにくい
たとえば、長い処理や分岐がある処理をラムダ式で書くと、コードがゴチャゴチャして見にくくなることがあります。その場合は、通常の関数に切り出したほうがわかりやすいです。
7. 初心者におすすめの使い分け方法
最後に、プログラミング初心者の方が迷ったときの使い分けルールを紹介します。
- 最初はすべて通常関数で書くのが安心
- リスト操作や一時的な処理でラムダ式を使ってみる
- コードを短くしたいときにだけラムダ式を使う
慣れてきたら、少しずつラムダ式を取り入れるといいでしょう。いきなりすべてラムダ式で書こうとすると混乱してしまうので、まずは通常の関数で確実に書けるようになるのが大切です。