言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Kotlin辞典

  1. トップページ
  2. Kotlin辞典
  3. fun 関数の定義

fun 関数の定義

Kotlinの関数は『fun』キーワードで定義します。引数にはデフォルト値を設定でき、呼び出し時に名前付き引数を使うと可読性が高まります。

構文

// 基本的な関数定義
fun 関数名(引数名: 型, 引数名: 型): 戻り値型 {
    // 処理
    return 値
}

// 戻り値なしの関数(Unit は省略可能)
fun greet(name: String): Unit {
    println("Hello, $name!")
}

// デフォルト引数
fun power(base: Int, exponent: Int = 2): Int {
    return Math.pow(base.toDouble(), exponent.toDouble()).toInt()
}

// 名前付き引数で呼び出します。
power(base = 3, exponent = 4)
power(exponent = 3, base = 2)  // 順序を変えられます。

構文一覧

構文概要
fun 名前(引数): 型関数を定義します。戻り値型が Unit のときは省略できます。
引数名: 型 = デフォルト値引数のデフォルト値を設定します。呼び出し時に省略できます。
名前付き引数呼び出し時に「引数名 = 値」と指定すると引数の順序を変えられます。
vararg 引数名: 型可変長引数を定義します。呼び出し側は複数の値を渡せます。
return 値関数から値を返します。戻り値なしの場合は省略できます。

サンプルコード

// 基本的な関数定義
fun add(a: Int, b: Int): Int {
    return a + b
}

// 戻り値なし(Unit は省略可能)
fun printMessage(msg: String) {
    println(msg)
}

// デフォルト引数
fun greet(name: String, greeting: String = "Hello") {
    println("$greeting, $name!")
}

// 可変長引数(vararg)
fun sum(vararg numbers: Int): Int {
    return numbers.sum()
}

// 名前付き引数の活用
fun createUser(name: String, age: Int = 0, admin: Boolean = false): String {
    return "User(name=$name, age=$age, admin=$admin)"
}

fun main() {
    println(add(3, 5))          // 8
    printMessage("Kotlin!")     // Kotlin!

    greet("Alice")              // Hello, Alice!
    greet("Bob", "Hi")          // Hi, Bob!
    greet(greeting = "Hey", name = "Charlie")  // 名前付き引数で順序変更

    println(sum(1, 2, 3, 4, 5)) // 15

    // デフォルト引数と名前付き引数の組み合わせ
    println(createUser("Alice"))                        // age・admin はデフォルト
    println(createUser("Bob", age = 25))                // age だけ指定
    println(createUser("Carol", age = 30, admin = true))

    // 配列を vararg に展開します(スプレッド演算子)
    val nums = intArrayOf(10, 20, 30)
    println(sum(*nums))         // 60
}

概要

Kotlinの関数はデフォルト引数と名前付き引数を組み合わせることで、JavaのようなオーバーロードなしにAPIを柔軟に設計できます。引数が多い関数では名前付き引数を使うと呼び出し側のコードが読みやすくなります。

戻り値型が明確な場合は型推論が効くため省略できますが、publicなAPIでは明示することが推奨されます。

簡潔な関数は単一式関数 / ローカル関数を、関数を値として扱う方法は高階関数を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。