看例子代碼,學kotlin語法(1.3)(解構聲明與數據類)

kotlin學習相關鏈接
在線學習
Kotlin 官方文檔
中文站(更新到 1.1):https://www.kotlincn.net/
網址(更新到 1.0.3):http://tanfujun.com/kotlin-web-site-cn/
Kotlin 中文論壇:https://www.kotliner.cn/
《Kotlin for android developers》中文版翻譯
語言學習網址:RUNOOB備註:裏面的虛擬機模擬適合小demo調試,程序太大還是建議到AS中。

1、銷燬聲明

/**
 * 此示例引入一個聲明,我們稱之爲解構聲明
 * 它一次創建多個變量,任何東西都可以在右邊
 * 銷燬聲明時,只需要聲明的組件數量
 */

fun main(args: Array<String>) {
    val pair = Pair(1, "one")

    val (num, name) = pair

    println("num = $num, name = $name")
}

class Pair<K, V>(val first: K, val second: V) {
    operator fun component1(): K {
        return first
    }

    operator fun component2(): V {
        return second
    }
}

2、數據類

/**
 *  數據類通過組件函數,爲每一個屬性都進行聲明
 * 在主要的構造函數中自動生成
 */

data class User(val name: String, val id: Int)

fun getUser(): User {
    return User("Alex", 1)
}

fun main(args: Array<String>) {
    val user = getUser()
    println("name = ${user.name}, id = ${user.id}")

    // or

    val (name, id) = getUser()
    println("name = $name, id = $id")

    // or

    println("name = ${getUser().component1()}, id = ${getUser().component2()}")
}

3、map的遍歷

/**
 *  Kotlin標準庫提供Map.Entry的組件功能
 */

fun main(args: Array<String>) {
    val map = hashMapOf<String, Int>()
    map.put("one", 1)
    map.put("two", 2)

    for ((key, value) in map) {
        println("key = $key, value = $value")
    }
}

4、數據類

/**
 *數據類可以自動生成 toString(), equals(), hashCode() and copy()等功能方法
 */

data class User(val name: String, val id: Int)

fun main(args: Array<String>) {
    val user = User("Alex", 1)
    println(user) // toString()

    val secondUser = User("Alex", 1)
    val thirdUser = User("Max", 2)

    println("user == secondUser: ${user == secondUser}")
    println("user == thirdUser: ${user == thirdUser}")

    // copy() function
    println(user.copy())
    println(user.copy("Max"))
    println(user.copy(id = 2))
    println(user.copy("Max", 2))
}

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