Kotlin - 関数
公開日:2019-11-06 更新日:2019-11-06
[Kotlin]
1. 概要
関数とは、入力(引数)と出力(戻り値)がある小さいプログラムのことです。
数学の関数とは異なり、戻り値がない関数も作成できます。
数学の関数とは異なり、戻り値がない関数も作成できます。
2. 関数の定義
fun add(v1: Int, v2:Int, v3:Int = 0): Int {
return v1 + v2 + v3
}
fun main() {
// 関数の呼び出し
val result1 = add(1, 2, 3)
// 引数名を指定すると、定義の順序とは異なる順序で指定できる
// また、引数名を付けた方が読みやすくなる場合がある
val result2 = add(v2 = 2, v1 = 1, v3 = 3)
// 3番目の引数は初期値が設定されているため省略可能
val result3 = add(1, 2)
println(result1) // 6
println(result2) // 6
println(result3) // 3
}
戻り値がない場合は、戻り値の型を Unit にします。
Unit は省略可能です。
//fun log(msg:String):Unit {
fun log(msg:String) {
println(msg)
}
fun main() {
log("test")
}
3. 可変長引数
vararg を使うと、引数の数を可変に出来ます。
fun add(vararg values:Int):Int {
return values.sum()
}
fun main() {
val result = add(1, 2, 3, 4, 5)
println(result) // 15
}
4. 関数内関数
関数内に関数を定義することができます。
fun main() {
val level = "[debug] "
fun log(msg:String) {
println(level + msg) // 関数の外の変数も参照可
}
log("Test") // [debug] Test
}
5. 無名関数(匿名関数)
無名関数は変数に代入して使うことができます。
戻り値がある場合は return を使います。
後ろに () を付けて、すぐに実行することもできます。
戻り値がある場合は return を使います。
val add = fun (v1:Int, v2:Int):Int {
return v1 + v2
}
println( add(1, 2) ) // 3
後ろに () を付けて、すぐに実行することもできます。
val result = fun (v1:Int, v2:Int):Int {
return v1 + v2
}(1, 2)
println( result ) // 3
6. 関数の参照
無名関数ではない普通の関数の参照は、「::関数名」として取得できます。
取得した参照は、無名関数やラムダ式と同様に、変数に代入したり、関数の引数として渡すことができます。
取得した参照は、無名関数やラムダ式と同様に、変数に代入したり、関数の引数として渡すことができます。
fun add(v1:Int, v2:Int):Int = v1 + v2
fun mul(v1:Int, v2:Int):Int = v1 * v2
fun calc(f:(Int, Int) -> Int, v1:Int, v2:Int):Int {
return f(v1, v2)
}
fun main() {
println(calc(::add, 5,10)) // 15
println(calc(::mul, 5,10)) // 50
val f = ::add
println( f(1, 2) ) // 3。 add(1, 2) が実行される
}