不能使用解构声明

hum*_*zed 3 kotlin

我有一节课Person:

class Person(val name: String, val age: Int)
Run Code Online (Sandbox Code Playgroud)

我想像这样使用Destructuring声明Parent:

val (name, age) = Person("name", 22)
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

类型为Person的解构声明初始值设定项必须具有'component1()'函数类型为Person的解构声明初始值设定项必须具有'component2()'函数

hum*_*zed 14

我们需要声明Person数据类.

data class Person(val name: String, val age: Int)
Run Code Online (Sandbox Code Playgroud)

在文档中不是很清楚,但官方参考:

https://kotlinlang.org/docs/reference/multi-declarations.html#example-returning-two-values-from-a-function

来自 Marko Topolnik评论:
如果由于某种原因某人无法使用数据类,则不是强制性的.你可以申报的功能component1(),并component2()在任何类.

  • 将其声明为数据类并不是强制性的.您可以在任何类中声明函数`component1()`和`component2()`. (8认同)
  • 是的,但是使用Destructuring声明的重点是要有一个简洁的代码,而使用数据类是最简单的方法。但是如果由于某种原因某人不能使用数据类,他们可以求助于component1()和component2()解决方案 (2认同)
  • 这正是我的观点.如果不合适,您不能_have_使用数据类. (2认同)