gpt4 book ai didi

android - Kotlin 错误 - 委托(delegate)调用链中有一个循环

转载 作者:行者123 更新时间:2023-12-04 23:47:59 25 4
gpt4 key购买 nike

我有一个 Kotlin 数据类,它采用以下参数并且可打包。我在这个数据类中定义了一个辅助构造函数,带有两个附加参数 lastSeen 和 netTotal。但是,我不断收到错误 委托(delegate)调用链中有一个循环 用于辅助构造函数。我该如何解决这个问题?

@Parcelize
data class Person(
val email: Email,
val overrideEmail: Email,
val phone: String,
val firstName: String,
val overrideFirstName: String,
val lastName: String,
val overrideLastName: String,
val personId: String
) : Parcelable {

//some code

constructor(
email: Email,
overrideEmail: Email,
phone: String,
firstName: String,
overrideFirstName: String,
lastName: String,
overrideLastName: String,
personId: String,
lastSeen: String,
netTotal: Int?
) : this(email, overrideEmail, phone, firstName, overrideFirstName, lastName, overrideLastName, personId, lastSeen, netTotal)

}
此外,我必须在响应映射器中使用这个辅助构造函数。具有原始值的映射器如下所示。如何在响应映射器中包含辅助构造函数?
class PersonFromResponseMapper @Inject constructor() : Mapper<Person, PersonResponse>() {
override fun map(from: PersonResponse, params: Any?): Person = with(from) {
Person(
Email(receiptEmailAddress.orEmpty()),
Email(overrideEmail.orEmpty()),
"",
firstName.orEmpty(),
overrideFirstName.orEmpty(),
lastName.orEmpty(),
overrideLastName.orEmpty(),
personUserId.orEmpty()
)
}

最佳答案

您收到此错误是因为您使用辅助构造函数调用辅助构造函数,从而使其成为一个循环。如果你稍微重构/美化你的代码,那么它变得很明显:

// secondary constructor
constructor(
email: Email,
overrideEmail: Email,
phone: String,
firstName: String,
overrideFirstName: String,
lastName: String,
overrideLastName: String,
personId: String,
lastSeen: String,
netTotal: Int?
) : this(
email,
overrideEmail,
phone,
firstName,
overrideFirstName,
lastName,
overrideLastName,
personId,
lastSeen,
netTotal
)
如果您比较参数,您可以看到您正在调用相同的(辅助)构造函数。您必须调用主构造函数,然后在 block 中使用您的附加参数。
如果你解决了这个问题,你也可以在你的映射器中调用你的辅助构造函数,没有任何问题。

关于android - Kotlin 错误 - 委托(delegate)调用链中有一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63082076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com