【问题标题】:Kotlin apply function with data class带有数据类的 Kotlin 应用函数
【发布时间】:2021-01-16 18:38:08
【问题描述】:

我有一个这样的数据类 -

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

我想使用apply范围函数来修改值并返回修改后的对象。

User("1", "Name").apply {
   this.id = "2" // Gives me error since val cannot be assigned
}

我不想让我的数据类不可变,也不想使用copy 函数。我该如何解决这个问题?

【问题讨论】:

    标签: android kotlin data-class


    【解决方案1】:

    您可以将copy 方法与data 类一起使用:

    val user1 = User("1", "Name")
    val user2 = user1.copy(id = "2")
    

    【讨论】:

    • 是的,副本我可以知道,但申请没有可能吗?
    • User("1", "Name").apply { copy(id = "2") } ?我不明白你为什么需要apply,为什么不想使用copy 方法?
    • 这没有提供问题的答案。
    【解决方案2】:

    这样改data class User(var id: String, var name: String)

    【讨论】:

    • 这并没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review
    • @AndriiOmelchenko 这不是问题的答案。尽管没有解释的纯代码答案不受欢迎,但它们仍然是一个答案。
    • @MarkRotteveel 当然,你是对的。这并不意味着建议的代码不能解决问题。现在它很有用,但只是一个评论。需要一些解释来改进答案:为什么会发生错误,为什么建议的解决方案可以解决问题等。并且审核表中没有其他合适的选项。
    • @AndriiOmelchenko 评论中没有合适的选项,因为这是一个答案,因此不应投票删除。如果您认为某个答案不好,那么投反对票就是正确的答案。
    • @MarkRotteveel 我不认为这个答案不好:我认为它非常好和有用,但它确实是一个评论。无论如何,感谢您的解释,我会改变我的回答方式。
    猜你喜欢
    • 2020-02-24
    • 2022-08-18
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多