【问题标题】:how to format data class containing set of records thats within a list如何格式化包含列表中记录集的数据类
【发布时间】:2021-12-13 05:51:50
【问题描述】:

我有一个名为 Alert 的数据类,其中包含以下内容

data class Alert(
    val status: String,
    val records: Set<String>
)

val orderedStatuses = getOrderedStatuses(date, statuses) 返回一个 List&lt;Alert&gt;,它当前包含 3 个值,每个值都有自己的集合。

    val orderedStatuses = getOrderedStatuses(date, statuses)
    val alert = if (orderedStatuses.isEmpty()) {
        "No alerts found"
    } else {
        "${orderedStatuses.size} alerts found "+
            "Alerts:\n" +
                orderedStatuses.joinToString("\n") {
                "\t${it.status} : \n" +
                    "\t(${it.records})"
            }
    }

输出如下所示:

Alerts:
    error_foo : 
    ([000-00-0000-00-000000000000, 111-1111-111-111-111111111111])
    error_bar : 
    ([222-222-222-222-222222222222, 333-33-3333-33-333333333333])
    error_blah : 
    ([444-4444-44444-444-444444444444, 555-555-555-555-555555555555])

我正在努力做的是以如下格式列出警报

我想将集合修复为如下所示:

Alerts:
    ERROR_foo : 
    ('000-00-0000-00-000000000000', '111-1111-111-111-111111111111')
    Error_bar : 
    ('222-222-222-222-222222222222', '333-33-3333-33-333333333333')
    Error_blah : 
    ('444-4444-44444-444-444444444444', '555-555-555-555-555555555555')

我一直在研究使用 Kotlin 进行函数式编程,但没有找到让我印象深刻的东西

谢谢!

【问题讨论】:

    标签: kotlin functional-programming set


    【解决方案1】:

    您需要修改打印警报的方式,我认为需要修改的是这部分

    "\t(${it.records})"
    

    应该调用另一个 joinToString() 并进行一些转换,这是你如何调用它

    "\t(${
        it.records.joinToString(",") { record -> "'${record}'" }
    })"
    

    这是else 块的完整代码

    "${orderedStatuses.size} alerts found " +
        "Alerts:\n" +
            orderedStatuses.joinToString("\n") {
                "\t${it.status} : \n" +
                    "\t(${
                        it.records.joinToString(",") { record -> "'${record}'" }
                    })"
            }
    

    【讨论】:

    • 成功了!有什么方法可以删除 [] 和每个单独的集合,只是让它像这样:('444-4444-44444-444-444444444444', '555-555-555-555-555555555555') 而不是这样:[('444-4444-44444-444-444444444444', '555-555-555-555-555555555555')]
    • 上面的答案已经有输出没有[]反正
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2019-11-30
    • 1970-01-01
    相关资源
    最近更新 更多