Kotlin 進階之路3 控制流與函數(shù)

Kotlin 進階之路 目錄

1.控制流

/**
 *用來檢查和運算各種條件和邏輯的組合,控制App的運行流向
 * 循環(huán):for晨横,while 及循環(huán)控制
 * if:二元判斷
 * when:細致化判斷
 * */
fun main(args: Array<String>) {
    println("----------------依次操作一個序列(如集合類型)中的每一項----------------")
    //for:1.依次操作一個序列(如集合類型)中的每一項洋腮,執(zhí)行次數(shù)是可預測的
    val numbers = arrayOf(1, 2, 3, 4)
    for (number in numbers) {
        println(number)
    }

    println("----------------重復執(zhí)行----------------")
    // 2.重復執(zhí)行:for(a in 1..10){//操作}
    for (n in 1..3) {
        println(n)
    }

    println("----------------while:循環(huán)執(zhí)行----------------")
    //while:循環(huán)執(zhí)行一系列操作,直到條件不成立,適合執(zhí)行次數(shù)未知的場合
    var number = 1
    while (number < 5) {
        number++
        println("hello")
    }

    //循環(huán)中的控制:continue 結(jié)束本次循環(huán) ,break 結(jié)束整個循環(huán)
    println("----------------結(jié)束本次循環(huán):continue----------------")
    val numbers2 = arrayOf(1, 2, 3, 4)
    for (number in numbers2) {
        if (number == 2) {
            break
        }
        println(number)
    }

    println("----------------結(jié)束整個循環(huán):break----------------")
    var number2 = 1
    while (number2 < 5) {
        number2++
        if (number2 == 3) {
            break
        }
        println("hello")
    }
    //if:條件判斷語句颠焦,整合語句本身是一個表達式
    println("----------------條件判斷語句:if----------------")
    val a = 3
    val b = 5
    val result = if (a > b) "a大于b" else "a小于b"
    println(result)

    //when:可對某個變量的大小/范圍/值表達式/類型等進行判斷
    println("----------------條件判斷語句:if----------------")
    val c = 11
    when (c) {

        in 0..10 -> {
            println("在0到10之間")
        }
        11,13,15 -> {
            println("屬于11,13,15中的值")
        }
        is Int -> {
            println("c屬于整數(shù)")
        }
        else -> {
            println("c屬于String類型")
        }
    }

}
----------------依次操作一個序列(如集合類型)中的每一項----------------
1
2
3
4
----------------重復執(zhí)行----------------
1
2
3
----------------while:循環(huán)執(zhí)行----------------
hello
hello
hello
hello
----------------結(jié)束本次循環(huán):continue----------------
1
----------------結(jié)束整個循環(huán):break----------------
hello
----------------條件判斷語句:if----------------
a小于b
----------------條件判斷語句:if----------------
屬于11,13,15中的值

2.函數(shù)

/**
 * 函數(shù)是有名字的一段代碼
 * 包含參數(shù)和返回值(可選),參數(shù)可以默認值
 */

fun main(args: Array<String>) {
    //F1函數(shù)名看文檔
    //調(diào)用時可打參數(shù)名粟害,可讀性更好(但調(diào)用Java函數(shù)無效)

    println("----------------類似于C++ 給參數(shù)一個默認值----------------")
    val a = add(3)
    println(a)

    println("----------------正常調(diào)用----------------")
    val b = add(3, 5)
    println(b)

    println("----------------可變參數(shù) 傳遞元素----------------")
    println(sum(1,2,3,4,20))

    println("----------------可變參數(shù) 傳遞數(shù)組*Array----------------")
    val c = intArrayOf(1,2,3,4,20)
    println(sum(*c))
}



/**
 * Any 任意類型
 * Int 整型
 * : Int 意味著返回整型
 */
fun add(x: Int, y: Int = 1): Int {
    return x + y
}

//可變參數(shù)修飾符vararg
fun sum(vararg x: Int): Int {
    var total = 0

    for (i in x) {
        total += i
    }
    return total
}

----------------類似于C++ 給參數(shù)一個默認值----------------
4
----------------正常調(diào)用----------------
8
----------------可變參數(shù) 傳遞元素----------------
30
----------------可變參數(shù) 傳遞數(shù)組*Array----------------
30

3.初識lambda與高階函數(shù)

/**
 * 高階函數(shù):1參數(shù)或返回值的類型是函數(shù)型
 * 函數(shù)型:(參數(shù)) -> 返回值
 * lambda:一種無名函數(shù)的簡寫 { (參數(shù)) -> 函數(shù)執(zhí)行語句}
 *        其它語言稱閉包估蹄,即有能力訪問其自身范圍外的變量
 */

fun main(args: Array<String>) {
    //高階函數(shù):描述任務的結(jié)果,而不是使用循環(huán)詳細的推算

    println("----------------map:常用與對集合類型的元素類型整體轉(zhuǎn)變----------------")
    //map:常用與對集合類型的元素類型整體轉(zhuǎn)變
    //其lambda中參數(shù)的約定稱為it
    val a = arrayOf(1,2,3,4,5,6,7,8)

    val b = a.map { "變?yōu)?$it" }

    for (s in b){
        println(s)
    }
    println("----------------filter:對集合類型進行篩選----------------")
    //filter:對集合類型進行篩選

    val c = a.filter { it %2 ==0 }
    for (i in c) {
        println(i)
    }
    println("----------------filter使用:對篩選數(shù)求和----------------")
    var sum = 0
    a.filter { it %2 ==0 }.forEach{
        sum+=it
        println(it)
    }
    println("求和:$sum")
}
----------------map:常用與對集合類型的元素類型整體轉(zhuǎn)變----------------
變?yōu)?1
變?yōu)?2
變?yōu)?3
變?yōu)?4
變?yōu)?5
變?yōu)?6
變?yōu)?7
變?yōu)?8
----------------filter:對集合類型進行篩選----------------
2
4
6
8
----------------filter使用:對篩選數(shù)求和----------------
2
4
6
8
求和:20
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末翘魄,一起剝皮案震驚了整個濱河市呢铆,隨后出現(xiàn)的幾起案子贷屎,更是在濱河造成了極大的恐慌罢防,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唉侄,死亡現(xiàn)場離奇詭異咒吐,居然都是意外死亡,警方通過查閱死者的電腦和手機属划,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門恬叹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人同眯,你說我怎么就攤上這事绽昼。” “怎么了须蜗?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵硅确,是天一觀的道長。 經(jīng)常有香客問我唠粥,道長疏魏,這世上最難降的妖魔是什么停做? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任晤愧,我火速辦了婚禮,結(jié)果婚禮上蛉腌,老公的妹妹穿的比我還像新娘官份。我一直安慰自己,他們只是感情好烙丛,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布舅巷。 她就那樣靜靜地躺著,像睡著了一般河咽。 火紅的嫁衣襯著肌膚如雪钠右。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天忘蟹,我揣著相機與錄音飒房,去河邊找鬼。 笑死媚值,一個胖子當著我的面吹牛狠毯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播褥芒,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嚼松,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起献酗,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤寝受,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后罕偎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體羡蛾,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年锨亏,在試婚紗的時候發(fā)現(xiàn)自己被綠了痴怨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡浪藻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出爱葵,到底是詐尸還是另有隱情,我是刑警寧澤反浓,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站雷则,受9級特大地震影響辆雾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜月劈,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一度迂、第九天 我趴在偏房一處隱蔽的房頂上張望猜揪。 院中可真熱鬧惭墓,春花似錦而姐、人聲如沸腊凶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钧萍。三九已至,卻和暖如春丈莺,著一層夾襖步出監(jiān)牢的瞬間划煮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工弛秋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留器躏,地道東北人蟹略。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像挖炬,于是被迫代替她去往敵國和親揽浙。 傳聞我的和親對象是個殘疾皇子意敛,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355