Kotlin入門-嗯,我有別名,什麼名稱都變短

在這裏插入圖片描述
自kotlin 1.1起,類型別名(Type alias)爲現有類型提供替代名稱,
如果類型名稱太長,可引入較短別名替代原類型名!


爲集合類型(collection type)提供別名:

//縮短較長泛型類型(generic type)是很有吸引力的

typealias NodeSet = Set<Network.Node>
typealias FileTable<K> = MutableMap<K, MutableList<File>>

爲函數類型(function type)提供別名(alias):

typealias MyHandler = (Int, String, Any) -> Unit
typealias Predicate<T> = (T) -> Boolean

爲內部類(inner)和嵌套類(nested)創建別名:

class A {
    inner class Inner
}
class B {
    inner class Inner
}
typealias AInner = A.Inner
typealias BInner = B.Inner

提示:

類型別名不會引入新類型,換言之,別名是一種編譯器的手段,底層不動的情況下,友好了編碼實現。
編譯器會把別名翻譯爲原有類型:

看個範例
typealias Predicate<T> = (T) -> Boolean
fun foo(p: Predicate<Int>) = p(42) 
    
fun main(args: Array<String>) {
    //類型別名和原有類型,可以相互替代,因爲編譯器會把別名翻譯爲原有類型
    val f: (Int) -> Boolean = { it > 0 }
    println(foo(f)) // 輸出 "true"

    val p: Predicate<Int> = { it > 0 }
    println(listOf(1, -2).filter(p)) // 輸出 "[1]"
}

添加別名聲明typealias Predicate後,Kotlin編譯器總是把它擴展爲(Int) -> Boolean


小結

Kotlin寫了那麼多章節,總結起來,它是在編譯期,簡化了 程序員的編碼工作量,減少重複代碼強度的編碼語言。更簡潔。而且,支持 IOS、Android、Web,的確,通過編譯期的強化,可以提供更好的編碼書寫支持。

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