如何在 Kotlin 中使用过滤器获取对象的特定属性?

问题描述 投票:0回答:1

在 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
属性?

kotlin
1个回答
0
投票

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)
© www.soinside.com 2019 - 2024. All rights reserved.