Kotlin 関数

関数とは、呼び出されたときにのみ実行されるコードのブロックです。

関数にはデータ(パラメータ/引数)を渡すことができます。

関数は特定のアクションを実行するために使用され、メソッドとも呼ばれます。

組み込み関数

関数は既にほかの章で使われていたので、なんとなくどんなものかは既におわかりいただけているかもしれません。

例えば、println() は関数です。これはテキストを画面に出力するために使用されます:

fun main() {
  println("Hello World")
}

自分の関数を作成する

自分の関数を作成するには、fun キーワードを使用し、関数の名前を書いた後に括弧 () を続けます:

fun myFunction() {
  println("I just got executed!")
}

関数の呼び出し

関数を作成したら、それを呼び出して実行することができます。

Kotlinで関数を呼び出すには、関数の名前の後に括弧 () を書きます。

以下の例では、myFunction() が呼び出されると、テキスト(アクション)が出力されます:

fun main() {
  myFunction() // myFunctionを呼び出す
}

// 出力: "I just got executed!" 

関数は複数回呼び出すことができます:

fun main() {
  myFunction()
  myFunction()
  myFunction()
}

// 出力:
// I just got executed!
// I just got executed!
// I just got executed! 

関数のパラメータ

関数に情報をパラメータとして渡すことができます。

パラメータは関数名の後、括弧内に指定します。複数のパラメータをカンマで区切って追加できます。ただし、各パラメータの型(Int、String など)を指定する必要があります。

以下の例では、fname という名前の String 型のパラメータを取る関数があります。関数が呼び出されると、名前を渡してフルネームを出力します:

fun myFunction(fname: String) {
  println(fname + " Doe")
}

fun main() {
  myFunction("John")
  myFunction("Jane")
  myFunction("George")
}

// 出力:
// John Doe
// Jane Doe
// George Doe 

パラメータが関数に渡されると、それを引数と呼びます。上記の例では、fname がパラメータであり、John、Jane、George が引数です。

複数のパラメータ

必要に応じて複数のパラメータを指定できます:

fun myFunction(fname: String, age: Int) {
  println(fname + " is " + age)
}

fun main() {
  myFunction("John", 35)
  myFunction("Jane", 32)
  myFunction("George", 15)
}

// 出力:
// John is 35
// Jane is 32
// George is 15 

注意:複数のパラメータを使用する場合、関数呼び出しで引数の数はパラメータの数と同じでなければならず、引数は同じ順序で渡す必要があります。

戻り値

上記の例では、関数を使用して値を出力しました。以下の例では、関数を使用して値を返し、その値を変数に代入します。

値を返すには、return キーワードを使用し、関数の括弧の後に戻り値の型を指定します(この例では Int):

fun myFunction(x: Int): Int {
  return (x + 5)
}

fun main() {
  var result = myFunction(3)
  println(result)
}

// 出力: 8 (3 + 5) 

2つのパラメータを使用する例:

fun myFunction(x: Int, y: Int): Int {
  return (x + y)
}

fun main() {
  var result = myFunction(3, 5)
  println(result)
}

// 出力: 8 (3 + 5) 

戻り値の短縮文法

戻り値を返すための短縮文法もあります。戻り値の型を指定せずに = 演算子を使用することができます。Kotlin は自動的に型を推測します:

fun myFunction(x: Int, y: Int) = x + y

fun main() {
  var result = myFunction(3, 5)
  println(result)
}

// 出力: 8 (3 + 5)