我最近一直在使用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/