如何处理从 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
}
我是 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
}