フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

kotlin覚えたメモ③(関数)

関数

関数を定義するにはfunを使用する。構文は下記のように記載する

//関数の定義
fun 関数名 (仮引数: 引数の型,...): 戻り値の型 {処理}

//関数の呼び出し
関数名(実引数,...)

例 フルネームを返す関数

fun getFullName (fistName: String, LastName: String): String {
  return LastName + fistName
}

println(getFullName("太郎", "山田"))

>> 山田太郎

仮引数と戻り値の型宣言は必須である。戻り値がない場合は戻り値の型として、Unitを指定するが、Unit型だけは例外的に省略が可能である。

  fun getFullName (fistName: String, LastName: String): String {
    return LastName + fistName
  }

  fun sayHello (greeting: String): Unit {
    var full_name = getFullName("太郎", "山田")
    println("${greeting} ${full_name}")
  }
  sayHello("こんにちは")

単一式関数

  • 下記のように記述することも可能
  fun getFullName (fistName: String, LastName: String): String = LastName + fistName
  println(getFullName("太郎", "山田"))    

引数のデフォルト値

  • デフォルト値が指定されていると引数を指定しなくても実行できる
  fun getFullName (fistName:String="太郎", LastName:String="山田"): String {
    return LastName + fistName
  }
  println(getFullName())

名前付き引数

  • 引数の順番を気にせず、名前を指定してパラメータを指定できる
  fun getFullName (fistName:String="太郎", LastName:String="山田"): String {
    return LastName + fistName
  }
  println(getFullName(LastName="鈴木"))

可変長引数の関数

  • 可変長引数を表現するにはvarargを使用する。可変長引数は内部的には配列とみなされるので、forループによる処理が可能
fun getSum(vararg numbers: Int): Int {
  var total = 0
  for (number in numbers) {
    total += number
  }
  return total
}
println(getSum(2, 3, 1, 7))
  • スプレッド演算子(*)を使えば可変長引数に配列を渡すこともできる
fun getSum(vararg numbers: Int): Int {
  var total = 0
  for (number in numbers) {
    total += number
  }
  return total
}
val numberList = intArrayOf(2, 3, 1, 7)
println(getSum(*numberList))

複数の戻り値を指定することもできる

  • 戻り値を2つ返したい場合、Pairを指定する
  • 戻り値を3つ返したい場合、Tripleを指定する
  • 関数の戻り値は分解宣言で代入する
fun getSum(vararg numbers: Int): Pair<Int, Int> {
  var total = 0
  var count = 0
  for (number in numbers) {
    total += number
    count++
  }
  return Pair(total,count)
}

val numberList = intArrayOf(2, 3, 1, 7)
val (total, count) = getSum(*numberList)