Kotlinをちまちまやり直してる
ちまちまやり直す
基礎的なやつ
// デフォルト引数つきで簡単に関数書く fun add(i: Int = 0): Int = i + 1 // 再起呼び出し fun sum(numbers :List<Int>): Int = if (numbers.isEmpty()) 0 else numbers.first() + sum(numbers.drop(1)) fun main() { // "1 add 0 = 1"(関数だけ呼び出すとデフォルト引数が参照される) println("1 add 0 = " + add()) // "1 add 1 = 2"(ふつう) println("1 add 1 = " + add(1)) // "sum = 6" println("sum = " + sum(listOf(1, 2, 3))) // 関数をオブジェクトとして扱う val functionAddDefault = ::add // "functionAddDefault = 1" println("functionAddDefault = " + functionAddDefault(0)) }
ラムダ式と無名関数
fun main() { // ラムダ式の例 val squareA: (Int) -> Int = { i: Int -> i * i } // "squareA(1) = 1" println("squareA(1) = " + squareA(1)) // ↑ を省略 val squareB = { i: Int -> i * i } println("squareB(1) = " + squareB(1)) // 引数が1つならitで呼べる val squareC: (Int) -> Int = { it * it } // "squareC(1) = 1" println("squareC(1) = " + squareC(1)) // 無名関数を利用 returnが使える val squareD: (Int) -> Int = fun (i: Int): Int { return i * i } // "squareD(1) = 1" println("squareD(1) = " + squareD(1)) // ↑ を省略 returnが使えない val squareF: (Int) -> Int = fun (i: Int) = i * i println("squareF(1) = " + squareF(1)) }