首页 > 解决方案 > 映射转换以在作为 url 的字符串列表上应用新路径

问题描述

我有一个字符串列表(newsFeeds),它们是一个链接。其中一些具有路径组件,而另一些则没有。我的目标是仅在存在路径组件时应用自定义路径组件。我的代码如下。

如何以更 Kotlin 的风格编写它?

newsRepository.getAllNewsFeeds().observeForever { newsFeeds ->

    listNewsFeedUrls = newsFeeds.mapNotNull { newsFeed ->

        if (newsFeed.newsfeedURL?.toUri()?.path.isNullOrEmpty()) {
            newsFeed.newsfeedURL + "/us/json/news"
        } else {
            newsFeed.newsfeedURL
        }
    }

}

标签: kotlin

解决方案


您的代码看起来已经不错了。不要为了让它更 Kotlinish 而降低可读性。

如果您仍然想查看其他方式,请查看以下内容:

如果您想避免冗余,您可以立即将您的列表映射newsFeeds到列表newsfeedURLs。此外,您可以连接路径或空字符串以避免必须引用url两次。

newsFeeds.mapNotNull(NewsFeed::newsfeedURL).map { url ->

     url.toString() + if (url.toUri()?.path.isNullOrEmpty()) {
        "/us/json/news"
    } else {
        ""
    }
}

推荐阅读