在 Kotlin 中我有以下对象:
data class BugReport(
val message: String,
val bugItems: List<BugItem>,
)
并且:
data class BugItem(
val title: String,
val checked: Boolean = false,
)
在
BugReport
对象中,如何仅获取 title
值等于 BugItem
的 checked
的 true
属性。
这个想法是从
title
中获取逗号分隔的字符串。
我有这个代码:
val checkedTitles = bugReport.bugItems.filter(BugItem::checked).joinToString()
但是通过这段代码我得到了完整的
BugItem
对象,我怎样才能只得到 title
属性?
joinToString
的最后一个参数允许您传递一个将对象转换为CharSequences
的函数,因此您可以这样做
val checkedTitles = bugReport.bugItems
.filter(BugItem::checked)
.joinToString(BugItem::title)
如果您想要包含标题的
List<String>
,则应使用 map
来转换对象。
// checkedTitles is of type List<String>
val checkedTitles = bugReport.bugItems
.filter(BugItem::checked)
.map(BugItem::title)