[日更][28]-Kotlin

2023-09-07  本文已影响0人  代码多哥

因为时间很短,所以内容不是很复杂,写一个有价值的小知识,主要是为了保持每日学习和写作的习惯,大作还是会写到相关的主题里面,尽量做到周更。敬请关注本人的主要作品集:

一路向下之AOSP研究

为了能够最大限度的保证文章的质量,日更主要采用翻译的方法来完成。本系列将主要翻译Kotlin官网的内容。具体的地址

https://kotlinlang.org/docs/home.html

二十七, 函数-类-Data Class

Kotlin的数据类对于存储数据特别有用。Data类具有与类相同的功能,但它们会自动生成其他成员函数。这些成员函数允许您轻松地将实例打印到可读输出、比较类的实例、复制实例等等。由于这些函数是自动可用的,您不必花时间为每个类编写相同的样板代码。
要声明数据类,请使用关键字data:

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

Data类最有用的预定义成员函数是:

Function Description
.toString() 打印类实例及其属性的可读字符串。
.equals() or == 比较类的实例。
.copy() 通过复制另一个类实例来创建类实例,该实例可能具有一些不同的属性。

有关如何使用每个函数的示例,请参阅以下部分:

打印为字符串

要打印类实例的可读字符串,可以显式调用.toString() 函数,也可以使用打印函数println()和print(),它们会自动为您调用.toSring():

// Automatically uses toString() function so that output is easy to read
println(user)            
// User(name=Alex, id=1)

这在调试或创建日志时特别有用。

比较实例

要比较数据类实例,请使用相等运算符==:

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

// Compares user to second user
println("user == secondUser: ${user == secondUser}") 
// user == secondUser: true

// Compares user to third user
println("user == thirdUser: ${user == thirdUser}")   
// user == thirdUser: false

复制实例

要创建Data类实例的精确副本,请在实例上调用.copy()函数。
要创建Data类实例的副本并更改某些属性,请在实例上调用.copy()函数,并添加属性的替换值作为函数参数。
例如:

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

// Creates an exact copy of user
println(user.copy())       
// User(name=Alex, id=1)

// Creates a copy of user with name: "Max"
println(user.copy("Max"))  
// User(name=Max, id=1)

// Creates a copy of user with id: 3
println(user.copy(id = 3)) 
// User(name=Alex, id=3)

创建实例的副本比修改原始实例更安全,因为任何依赖于原始实例的代码都不受副本及其处理方式的影响。
有关Data类的详细信息,请参见Data类。

译者注释

上一篇 下一篇

猜你喜欢

热点阅读