関数とラムダ
パラメーターと戻り値の型を指定して関数を定義し、デフォルト引数と名前付き引数を使い、簡潔なラムダ式を書きます。
「関数とラムダ」はCoddyKit上の無料Android Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAndroid Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Android Academyコースには全3レッスンが含まれています。
関数を使う理由
関数を使うと、コードのまとまりを一度書くだけで、どこからでも再利用できます。
- 重複を減らせます
- コードを読みやすく、テストしやすくできます
- 大きな問題を小さな部分に分割できます
Kotlinでは関数は第一級オブジェクトです。変数に格納したり、他の場所に渡したりできます。
関数の基本構文
Kotlinの関数ではfunキーワードを使います。
fun greet(name: String): String {
return "Hello, $name!"
}
fun main() {
val msg = greet("Alice")
println(msg) // Hello, Alice!
println(greet("Bob")) // Hello, Bob!
}単一式関数
関数本体が1つの式だけで構成される場合は、=を使って波かっことreturnを省略できます。
fun square(n: Int): Int = n * n
fun add(a: Int, b: Int) = a + b // type inferred
fun main() {
println(square(5)) // 25
println(add(3, 7)) // 10
}デフォルト引数と名前付き引数
Kotlinの関数では、パラメーターにデフォルト値を指定できます。オーバーロードは必要ありません。
- デフォルト:
fun greet(name: String = "World") - 名前付き:
greet(name = "Alice")のように呼び出すと、引数の順番を気にせずに済みます
デフォルト引数と名前付き引数の実践
デフォルト引数を使うと、APIをすっきり保てます。
fun buildProfile(
name: String,
age: Int = 0,
role: String = "User"
): String {
return "$name | age=$age | $role"
}
fun main() {
println(buildProfile("Alice"))
println(buildProfile("Bob", age = 30))
println(buildProfile("Carol", 25, "Admin"))
}ラムダとは
ラムダは匿名関数、つまり名前のない関数です。
- 構文:
{ params -> body } - 変数に格納できます:
val double = { x: Int -> x * 2 } - 引数として別の関数に渡せます
ラムダはAndroidのいたるところで使われます。クリックリスナー、リスト変換、コルーチンなどがその例です。
ラムダの例
ラムダは通常の関数と同じように、格納して呼び出せます。
fun main() {
val double = { x: Int -> x * 2 }
println(double(4)) // 8
val add = { a: Int, b: Int -> a + b }
println(add(3, 5)) // 8
// Lambda with no params
val sayHi = { println("Hi!") }
sayHi() // Hi!
}高階関数
高階関数とは、別の関数をパラメーターとして受け取るか、関数を返す関数です。
Kotlin標準ライブラリには、filter、map、forEachなどの高階関数が多数用意されています。
末尾ラムダ構文:最後の引数がラムダの場合、ラムダをかっこの外に移動できます。
末尾ラムダ構文
ラムダを最後の引数として、かっこの外に渡します。
fun applyTwice(n: Int, operation: (Int) -> Int): Int {
return operation(operation(n))
}
fun main() {
val result = applyTwice(3) { x -> x * 2 }
println(result) // 12 (3 * 2 = 6, 6 * 2 = 12)
// 'it' is the implicit single parameter
val doubled = applyTwice(5) { it + it }
println(doubled) // 20
}クイックチェック
このコードを見て、何が出力されるか考えてみてください。
val triple = { x: Int -> x * 3 }
println(triple(4))
まとめ:関数とラムダ
次のことを学びました。
funで、パラメーターと戻り値の型を持つ関数を定義します- 単一式関数では
=による省略構文を使います - デフォルト引数と名前付き引数でオーバーロードを置き換えられます
- ラムダは匿名関数です:
{ params -> body } - 高階関数は関数をパラメーターとして受け取ります
次は、条件分岐とループでプログラムの流れを制御します。
よくある質問
「関数とラムダ」レッスンは無料ですか?
はい。「関数とラムダ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Android Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Android Academyコースには全3レッスンが含まれています。
「関数とラムダ」で何を学びますか?
パラメーターと戻り値の型を指定して関数を定義し、デフォルト引数と名前付き引数を使い、簡潔なラムダ式を書きます。 ブラウザで直接実行するハンズオンコードでAndroid Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Android Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAndroid Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。
「関数とラムダ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAndroid Academyレッスンでコードを書いて実行できますか?
はい。すべてのAndroid Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。