ここまでは Kotlin の標準で用意されている関数を使ってきましたが、開発を進めていく上で標準の関数では対応できないものがでてきます。
そんな時は自分で関数を作って対処します。
他のプログラム言語でも同様だと思いますが、例えば PHP に比べると Kotlin の場合は標準で用意されている関数は少ないと思います。
ここでは、Kotlin の関数の定義の仕方について紹介します。
関数の書式
以前、main 関数を紹介した際にも少し関数の書式については触れました。

自分で定義する関数もほぼ同じになります。
fun 関数名(変数名: 変数の型) : 戻り値の型 {
return 戻り値
}
ちょっと雑なプログラムですが、配列のインデックスを渡して該当の場所を取得する関数を定義してみます。
1 2 3 4 5 6 7 8 9 | fun main(args: Array<String>) { val place: String = getPlace(0) println(place) } fun getPlace(place: Int) : String { val places: List<String> = listOf("京都", "阪神", "東京") return places[place] } |
結果は、以下になります。
京都
戻り値をなくす
上記サンプルでは Int 型の引数を受け取って、String 型の戻り値を返しました。
戻り値がない場合は String の代わりに Unit を定義すればいいのですが、Unit は省略可能なので省略した方がプログラムとしてもわかりやすいです。
1 2 3 4 5 6 7 8 | fun main(args: Array<String>) { getPlace(0) } fun getPlace(place: Int) { val places: List<String> = listOf("京都", "阪神", "東京") println(places[place]) } |
ブロックを省略する方法
これまでに紹介したサンプルでは、関数の中の処理が 2 行以上でした。
しかし関数の中の処理が 1 行だった場合、Kotlin ではブロックの {} を省略することができます。
1 2 3 4 5 6 7 8 | private val places: List<String> = listOf("京都", "阪神", "東京") fun main(args: Array<String>) { val place: String = getPlace(0) println(place) } fun getPlace(place: Int) : String = places[place] |
戻り値の型に対してイコールで処理の結果を結びます。
1 行の処理なんか滅多にないよって思われるかもしれませんが、メソッドチェーンを多用する場合は 1 行で済む場合も多く、覚えておいて損はありません。
もちろん、ブロックで括った方が見た目はわかりやすいですけどね。
まとめ
Kotlin の関数の定義について紹介しました。
引数の数や型を変えることで、いろいろなパターンの処理が関数化できます。
戻り値は原則 1 つしか返すことができませんが、通常は Int や String のような変数を返す場面は多くなくクラス変数などを使うケースが多いと思います。
このあたりは別の機会に紹介したいと思います。