ひよっこゲームブログ

なにもかも初心者のひよっこがゆったりと何かする

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))
}