第一章株灸、Kotlin:定義和目的
1.Kotlin和Java都是靜態(tài)類型的編程語(yǔ)言,這意味著所有表達(dá)式的類型在編譯期已經(jīng)確定了诊沪,而編譯期就能驗(yàn)證對(duì)象是否包含了你想訪問的方法或者字段差导。
這與動(dòng)態(tài)類型編程語(yǔ)言形成鮮明對(duì)比,在JVM上的代表包括Groovy和JRuby。這些語(yǔ)言允許你定義可以存儲(chǔ)任何數(shù)據(jù)類型的變量棠枉,或者返回任何數(shù)據(jù)結(jié)構(gòu)的靈活性浓体。缺點(diǎn)是:在編譯期不會(huì)發(fā)現(xiàn)像名字拼寫錯(cuò)誤這樣的問題,繼而導(dǎo)致運(yùn)行時(shí)的錯(cuò)誤辈讶。
2.類型推到:編譯期從上下文腿短變量類型的能力命浴。
3.函數(shù)式編程的核心概念:
- 頭等函數(shù)---把函數(shù)當(dāng)做值使用,可以用變量保存它贱除,把它當(dāng)做參數(shù)傳遞生闲,或者當(dāng)作其他函數(shù)的返回值。
- 不可變性---使用不可變對(duì)象勘伺,這保證了它們的狀態(tài)在其創(chuàng)建之后不能再變化跪腹。
- 無(wú)副作用---使用的是純函數(shù)。此類函數(shù)在輸入相同時(shí)會(huì)產(chǎn)生同樣的結(jié)果飞醉,并且不會(huì)修改其他對(duì)象的狀態(tài)冲茸,也不會(huì)和外面的世界交互。
函數(shù)式編程風(fēng)格的好處:
- 簡(jiǎn)潔
- 多線程安全(多線程程序中最大的錯(cuò)誤來源之一就是在沒有采用適當(dāng)同步機(jī)制的情況下缅帘,在不同的線程上修改同一份數(shù)據(jù)轴术。如果使用的是不可變數(shù)據(jù)結(jié)構(gòu)和純函數(shù),就能保證不安全的修改根本不會(huì)發(fā)生钦无,也不需要為其設(shè)計(jì)復(fù)雜的同步方案)
- 測(cè)試更加容易
Kotlin支持函數(shù)式編程風(fēng)格逗栽,包括:
- 函數(shù)類型---允許函數(shù)接受其他函數(shù)作為參數(shù),或者返回其他函數(shù)
- lambda表達(dá)式---用最少的樣板方法傳遞代碼塊
- 數(shù)據(jù)類---提供了創(chuàng)建不可變值對(duì)象的簡(jiǎn)明語(yǔ)法
- 標(biāo)準(zhǔn)庫(kù)的豐富API集合