【问题标题】:Change toString format of data class更改数据类的toString格式
【发布时间】:2020-11-10 19:59:01
【问题描述】:

我的自定义对象名称列表为 Days,其中 3 个属性 keyvalueisChecked。 以下是日期列表:

    listOf(
         Days("monday","9:30",false),
         Days("Tuesday","9:30",true)
         )

输出:[Days(key=Monday, value=9:30 AM, isChecked=true), Days(key=Tuesday, value=9:30 AM, isChecked=true)]

数据类:

data class Days(
    val key: String,
    var value: String,
    var isChecked:Boolean
)

现在我不想打印每个对象的最后一个属性,即isChecked=trueisChecked=false..我怎样才能做到这一点。我试过filtermap lambdas,但没有得到想要的结果。

预期操作:[Days(key=Monday, value=9:30 AM), Days(key=Tuesday, value=9:30 AM)]

【问题讨论】:

    标签: kotlin tostring data-class


    【解决方案1】:

    您必须自己编写 toString() 的替代版本。

    list.map { "Days(key=${it.key}, value=${it.value})" }
        .also { println(it) }
    

    【讨论】:

    • 嘿,谢谢!但这将返回 'list' 而我想要 'list'
    • Days 类的实例根本不具有该属性。那必须是一个完全不同的类。
    • 我有 Days 作为数据类并列为 List
    • 我不明白你在问什么。您是否只想更改在打印 Days 类时获得的内容?如果是这样,您必须重写 toString() 函数。
    【解决方案2】:

    如果要更改对象在转换为字符串时的显示方式,请覆盖toString() 函数:

    data class Days(
        val key: String,
        var value: String,
        var isChecked: Boolean
    ) {
        override fun toString(): String = "Days(key=$key, value=$value)"
    }
    
    fun main() {
        val days = listOf(
            Days("monday", "9:30", false),
            Days("Tuesday", "9:30", true)
        )
    
        for (item in days) println(item)
    }
    

    输出:

    Days(key=monday, value=9:30)
    Days(key=Tuesday, value=9:30)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-25
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 2021-01-06
      相关资源
      最近更新 更多