美文网首页
Kotlin中的解构声明

Kotlin中的解构声明

作者: 盛世光阴 | 来源:发表于2021-06-12 23:15 被阅读0次

前言

Kotlin是一种在Java虚拟机上运行的静态类型编程语言,被称之为Android世界的Swift,在GoogleI/O2017中,Google宣布Kotlin成为Android官方开发语言

什么是解构声明

把一个对象可以解构成多个对象的声明方式叫做解构声明

解构声明的使用

data class Person(val name: String, val age: Int)
class Call{
    fun test(){
        val (name,age) = Person("Mike",28)
        println(name)
        println(age)
    }
}

其中(name,age)就是解构的声明方式,并且打印结果是

Mike
28

结构声明只能在局部变量
如果声明在成员变量会提示
destructuring declarations are only allowed for local variables/values
结构声明默认只支持data数据类对象,普通类不支持
当我们使用解构声明时,编译器会生成这样的代码

fun test(){
    val (name,age) = Person("Mike",28)
}
//编译后
public final void test() {
    Person var3 = new Person("Mike", 28);
    String var1 = var3.component1();
    int age = var3.component2();
}
data class Person(val name: String, val age: Int)
//编译后
public final class Person {
    @NotNull
    private final String name;
    private final int age;
    public Person(@NotNull String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    @NotNull
    public final String component1() {
        return this.name;
    }

    public final int component2() {
        return this.age;
    }
}

name就相当于是component1()的返回值,age就相当于是component2()的返回值,并且这两个函数都是data class编译后直接产生的,所以可以可以直接使用解构的方式声明,普通类如果需要使用解构声明则需要手动定义这些函数

class Person(val name: String,val age: Int){  
operator fun component1(): String { return name }
operator fun component2(): Int { return age }
}
class Call{
    fun test(){
        val (name,age) = Person("Mike",28)
    }
}

使用解构声明在循环和lambda中
可以直接使用解构声明的方式接收元素

fun test() {
    val persons = listOf<Person>(Person("张三", 11), Person("", 12), Person("Mike", 13))

    for ((name, age) in persons) {
    }
    persons.forEach { (name, age) ->
    }
}

用于函数返回多个变量

data class CallResult(val errorCode:Int,val errorMsg:String)

fun httpCall():CallResult{
    val errorCode = 500
    val errorMsg = "End of Stream"
    return CallResult(errorCode,errorMsg)
}

val (errorCode,errorMsg) = httpCall()

解构中不使用的变量
使用-表示不使用的变量,编译器则不会生成此变量

val (name,_) = Person(“Mike”,28)

注意点
需要注意,在进行解构声明时,命名的位置会和数据类的变量位置对应,防止解构变量命名位置放反,造成不必要的麻烦

data class Person(val name: String, val age: Int)
fun test(){
    val (age,name) = Person(“Mike”,28)//位置放反使用起来会造成混淆
}

欢迎关注Mike的简书

Android知识整理

相关文章

  • Kotlin- 解构声明(Destructuring Decla

    (翻译) 解构声明 解构声明是Kotlin中另一个重要的特性。我们可以利用这个特性来编写更好的应用程序。 解构声明...

  • Kotlin中的解构声明

    前言 Kotlin是一种在Java虚拟机上运行的静态类型编程语言,被称之为Android世界的Swift,在Goo...

  • 22.Kotlin解构声明详解

    Kotlin解构声明详解 有时把一个对象解构成很多变量会很方便,例如: 这种语法称为解构声明 。一个解构声明同时创...

  • Kotlin 解构声明

    一、什么是解构声明 在 Koltin 中可以把一个对象赋值给多个变量,这种操作叫做解构声明(Destructuri...

  • kotlin 解构声明

    将对象解构成多个变量,使用起来更加方便。 声明data class 使用 多余变量用不到可以用下划线省略 对于da...

  • Kotlin的解构声明

    将一个对象解构成多个变量 一、解构声明 解构声明会被编译成如下代码 使用解构声明时,对象需要提供 componen...

  • Kotlin-解构声明

    https://blog.csdn.net/IO_Field/article/details/53377547

  • Kotlin 解构声明 详解

    引言 解构声明是将一个对象 解构成 N 个变量,一个解构声明同时创建多个变量 如何使用解构声明 直接将对象解构为N...

  • Kotlin与Java:解构声明

    解构声明 在现代语言中常常拥有结构声明用语简化代码,例如JavaScript与Kotlin,但是在Java中却没有...

  • Kotlin 解构声明和元组

    一. 解构声明简介 解构声明,可以将一个对象解构成多个变量,像下面这样 一个解构声明同时创建多个变量,并且可以单独...

网友评论

      本文标题:Kotlin中的解构声明

      本文链接:https://www.haomeiwen.com/subject/nscweltx.html