天天看點

Kotlin基礎(四)控制流和函數

控制流
if elseif / while / when / for break continue           
var array = arrayOf(1, 2, 3, 4, 5)

    //周遊
    for (a in array) {
        if (a > 2) {
            print(a)
        }
    }
    //範圍内
    for (a in 5..20) {
        print(a)
    }

    var number = 1
    var total = 0;
    while (total < 505) {
        total = total + number
        if (total > 100) {
            println("大于" + total)
            break
        } else {
            println("小于" + total)
        }
    }           
when
var cu = 18

//滿足一個條件就結束,相當于java中的elseif
//可對變量的大小/範圍/值表達式/類型進行判斷

when (cu) {
    //範圍(不在0~10之間)
    !in 0..10 -> {
        println("在範圍内=="+cu)
    }
   //範圍
    1,2,3,18 -> {
        println("在範圍内=="+cu)
    }
    //表達式
    (8-6) ->{
        println("2=="+cu)
    }
    //類型
    is Int -> {
        println("${cu}是Int類型")
    }
    else -> {
        println(cu)
    }
}
           
函數

普通函數

// fun 函數名(入參 : 參數類型 = 預設值): 傳回值類型
//y的預設值是20
fun add(x: Int, y: Int = 20): Int {
    return x + y
}

//可變參數修飾符vararg,類似Java中的String...和int...
fun sum( vararg ints : Int) : Int {
var total = 0
    for (a in ints) {
        total = total + a
    }
    return total
}           
fun main(args: Array<String>) {
    var c = add(1,2)
    //給了y的入參,預設值就失效了
    var d = add(x = 3, y = 4)
    //y有預設值的時候,y可以不傳
    var e = add(2)
    println("相加後${c} ${d} ${e}")

    var sum = sum(5,6,2,4,9)
    //或
    var intarray = intArrayOf(5,6,2,4,9)
    var sum2 = sum(*intarray)

    println("數組相加後${sum}   ${sum2}")
}           

高階函數(map和filter)

fun main(args: Array<String>) {

    var array = intArrayOf(1,2,3,4,5)
    //高階函數:描述任務的結果,而不是使用循環詳細推算
    //map:常用語對集合類型的所有元素類型轉換
    //lambda(無名函數) 函數的元素約定名稱為it
    var b = array.map { "第${it}"}
    for (i in b) {
        println(i)
    }
    //篩選函數
    var sum = 0
    var d = array.filter { it % 2 == 0 }.forEach {
        sum  = sum + it
    }
}