看例子代码,学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))
}

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