Kotlin最全語(yǔ)法學(xué)習(xí)——KotlinWithNotes項(xiàng)目

??本項(xiàng)目總結(jié)了 Kotlin 幾乎全部的知識(shí)點(diǎn),代碼中有詳盡的注釋,用以幫助理解靶擦。本人主要參考了 Kotlin 語(yǔ)言中文站再膳、Kotlin 教程 | 菜鳥教程 中的代碼示例乡小。部分知識(shí)難點(diǎn)如:委托模式、注解饵史、反射满钟,通過(guò)查閱《Kotlin實(shí)戰(zhàn)》進(jìn)行了相關(guān)總結(jié),歡迎大家一起研究學(xué)習(xí)胳喷。

項(xiàng)目地址:https://github.com/CelebrateG/KotlinWithNotes

掘金地址

kotlin委托的栗子

??委托是Kotlin中最獨(dú)特和最強(qiáng)大的功能之一湃番,下面是項(xiàng)目中的兩個(gè)例子,
Example1:

/**
 * @Author CelebrateG
 * @Description 委托模式:操作的對(duì)象不用自己執(zhí)行,而是把工作委托給另一個(gè)輔助對(duì)象
 * 類委托吭露,kotlin 通過(guò) by 關(guān)鍵字將接口實(shí)現(xiàn)委托給另一個(gè)對(duì)象
 */

interface AnotherInterface{
    val message: String
    fun printSomething()
    fun printMessage()
}

/**
 * 接口實(shí)現(xiàn)類
 * 即受委托的類
 */
class Impl(val x : Int) : AnotherInterface{
    override val message = "Impl: x = $x"

    override fun printMessage() {
        println("printMessage: $x")
    }

    override fun printSomething() {
        println("printSomething: $x")
    }
}

/**
 * by 關(guān)鍵字將接口的實(shí)現(xiàn)委托給了 i
 * 委托對(duì)象 i 為 Derived 的構(gòu)造參數(shù)
 */
class Derived(i : Impl) : AnotherInterface by i

/**
 * 委托給 i 并重寫了方法
 */
class Derived2(i : Impl) : AnotherInterface by i{
    //此處調(diào)用 i 實(shí)現(xiàn)的message屬性
    override fun printMessage() {
        println("Derived2.printMessage $message")
    }

}

/**
 * 測(cè)試方法
 */
fun testFun(){
    val i = Impl(10)
    Derived(i).printSomething()
    Derived2(i).printMessage()
    println(Derived2(i).message)
}

fun main(args:Array<String>){
    testFun()
}

Example2:

/**
 * @Author CelebrateG
 * @Description 委托屬性
 * @Date  2018/10/26
 */

/**
 * 通過(guò) by 關(guān)鍵字編譯器會(huì)自動(dòng)生成一個(gè)輔助屬性 val delegate = Delegate()
 * p 的訪問都會(huì)調(diào)用對(duì)應(yīng) delegate 的 getValue 和 setValue 方法
 */
class Example {
    var p: String by Delegate()
}

/**
 * 屬性的委托不必實(shí)現(xiàn)任何的接口吠撮,
 * 但是需要提供一個(gè) getValue() 函數(shù)
 * (與 setValue()函數(shù)——對(duì)于 var 屬性)
 * 即將訪問器的邏輯委托給一個(gè)輔助對(duì)象
 * 兩函數(shù)都需要用 operator 關(guān)鍵字來(lái)進(jìn)行標(biāo)記
 */
class Delegate{
    /**
     * thisRef 必須與屬性所有者類型(對(duì)于擴(kuò)展屬性——指被擴(kuò)展的類型)相同
     * 或者是它的超類型(可以理解為接受屬性的實(shí)例)
     * property 必須是類型 KProperty<*> 或其超類型(可以理解為屬性本身)
     * 函數(shù)必須返回與屬性相同的類型(或其子類型)
     */
    operator fun getValue(thisRef : Any?,property : KProperty<*>):String{
        return "thisRef:$thisRef ,property:'${property.name}'"
    }

    /**
     * thisRef,property同上
     * value 必須與屬性同類型或者是它的超類型
     */
    operator fun setValue(thisRef : Any?,property : KProperty<*>,value : String){
        println("value:${value.toString()},property:'${property.name}',thisRef:${thisRef.toString()}")
    }

}


/**
 * 自 Kotlin 1.1 起也可以在函數(shù)
 * 或代碼塊中聲明一個(gè)委托屬性
 */
fun aFun(){
    var name : String by Delegate()
    name = "aFun"
    println(name)
}

包結(jié)構(gòu):

??基本按照 Kotlin 語(yǔ)言中文站目錄劃分,建議可以先從 grammer 目錄基本語(yǔ)法開始看起讲竿。

image

項(xiàng)目中的依賴:

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
androidTestImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
implementation 'org.jetbrains.exposed:exposed:0.11.2'

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泥兰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子题禀,更是在濱河造成了極大的恐慌鞋诗,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迈嘹,死亡現(xiàn)場(chǎng)離奇詭異削彬,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)秀仲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門融痛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人神僵,你說(shuō)我怎么就攤上這事雁刷。” “怎么了保礼?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵沛励,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我氓英,道長(zhǎng)侯勉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任铝阐,我火速辦了婚禮址貌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己练对,他們只是感情好遍蟋,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著螟凭,像睡著了一般虚青。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上螺男,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天棒厘,我揣著相機(jī)與錄音,去河邊找鬼下隧。 笑死奢人,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的淆院。 我是一名探鬼主播何乎,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼土辩!你這毒婦竟也來(lái)了支救?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拷淘,失蹤者是張志新(化名)和其女友劉穎各墨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辕棚,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡欲主,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逝嚎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡详恼,死狀恐怖补君,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情昧互,我是刑警寧澤挽铁,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站敞掘,受9級(jí)特大地震影響叽掘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜玖雁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一更扁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦浓镜、人聲如沸溃列。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)听隐。三九已至,卻和暖如春哄啄,著一層夾襖步出監(jiān)牢的瞬間雅任,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工咨跌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沪么,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓虑润,卻偏偏與公主長(zhǎng)得像成玫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拳喻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容