kotlin - 将选项列表映射到字符串列表

标签 kotlin optional arrow-kt

我最近一直在使用Arrow Kotlin,但是我仍然对如何将选项列表映射到它们的值感到困惑。例如:

val listOfStrings: List<String> = listOf<Option<String>>().map { /* ? */ }

目前,我正在这样做:
val listOfStrings: List<String> = listOf<Option<String>>().filter { it.isDefined() }.map { it.getOrElse { "" } }

但这感觉笨拙,我肯定会丢失一些东西。

最佳答案

您需要Haskell的catMaybes。 :D
我不知道Arrow中是否有类似的东西,但是您可以使用filterMap中的arrow.core.extensions.list.monadFilter.filterMap:

fun main() {
    val list = listOf(Some(1), None)

    println(list.filterMap(::identity))
}
// prints: ListK(list=[1])

关于kotlin - 将选项列表映射到字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59720122/

相关文章:

operator-overloading - 在 Kotlin 中,我可以覆盖一些现有的运算符,但是创建新的运算符呢?

android - 通过 Method channel 从 Flutter 发送 Map/JSON 到 Android

Java 8 双函数引用?

kotlin - Kotlin箭头IO,IO.fx,IO效果之间的区别

kotlin - Kotlin 箭头库中 Either.fold() 的返回类型

Android parcelable - 写入可空长

Kotlin - 委托(delegate)链

java - 为一个 Optional 提供一个空列表?

c++ - 返回完整或空 std::optional 时的 If-then-else 与三元运算符

kotlin - 从 map 中剪切具有空值的对