如何处理从 API 接收到的数据 类 中的信息

How to process information in data classes received from an API

我是 Kotlin 新手,发现了很棒的数据 Class!

因此,我正在使用数据 Classes 从 JSON API 获取一些信息,但我想在使用数据之前处理数据以保存一些信息time/processing 权力。

为了方便起见,我举一个简单的例子:

data class UserApi(val name: String, val born: Int)

如我所说,我从 JSON API 接收数据,但以编程方式创建用户将如下所示:

val userApi: UserApi = UserApi("Catelyn", 1990)

现在,不用每次都通过以下方式计算用户的年龄:

"currentYear - userApi.born" // Calculating an approximate age

Ofc 不改变 API,我只想得到一个像这样的不可变值:

userApi.age

这可能吗? 我在想:

interface UserApi {
    val name: String
    val born: Int
}

data class User(override val name: String, override val born: Int) : UserApi {
    // Calculating an approximate age
    val age: Int = "currentYear - userApi.born"
}

val user: User = User("Catelyn", 1990) // Or get the data from an API.

// Getting the age of the User like this:
user.age // Same as "currentYear - userApi.born".

这样的事情是要走的路吗?

您可以将额外的 属性 混合到您的数据中 class:

data class UserApi(val name: String, val born: Int) {
  val age get() = LocalDate.now().year - born
}

val mikesAge = UserApi("Mike", 1990).age

这个属性每次访问都会自动计算
请参阅 "custom getter" 示例 here

或者您可以只定义新的 属性。这个属性只会计算一次:

data class UserApi(val name: String, val born: Int) {
  val age = LocalDate.now().year - born
}