第一行代碼 第三版 5.6 kotlin課堂 :擴展函數和運算符重載

5.6 kotlin課堂 :擴展函數和運算符重載

5.6.1擴展函數

拓展函數 : 表示即使在不修改某個類的源代碼的情況下,仍然可以打開這個類,向該類中添加新函數。

拓展函數的語法結構:

fun ClassName.methodName(param1 :Int,param2 :Int):Int{
	return 0
	}

示例代碼:

/**
 * 將letterCount()方法定義成String類的拓展函數
 * 函數會自動擁有String 實例的上下文
 */
fun String.letterCount():Int{
    var count = 0
    for(char in this){
        if(char.isLetter()){
            count++
        }
    }
    return count
}
fun main() {
    val count="Adsasvcw25156a1d3w".letterCount()
    println(count)
}

拓展函數的作用:多數情況下,可以讓API變得更加簡潔豐富,更加面向對象。

5.6.2 運算符重載

Kotlin的運算符重載允許我們讓任意鏈兩個對象進行相加,或者是進行更多其他的運算符重載。

運算符重載使用的是operator關鍵字,在指定函數的前面加上operator關鍵字就可以實現運算符重載的功能。
對兩個對象進行相加操作

class Money(val value:Int) {
    operator fun plus(money: Money):Money{
        val sum=value+money.value
        return Money(sum)
    }
}

fun main() {
    val money1=Money(100)
    val money2=Money(400)
    val money3 =money1+money2
    val money4=money1.plus(money2)
    println("${money1.value} + ${money2.value} =${money3.value}-----${money4.value}")
}

因爲kotlin允許我們對同一個運算符進行多重重載,所以可以實現上述代碼中的Money類可以直接和數字相加。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章