我无法使用ListKOf<T>
平面映射T -> Option<V>
。
例如
listOf(1,2,3).k().flatMap { i ->
if (i % 2 == 0) Some(i) else None
}
报告
Required (Int) -> ListKOf<Int>. Found (Int) -> Option<Int>
。要使其编译,我需要这样做:
listOf(1,2,3).k().flatMap { i ->
val opt = if (i % 2 == 0) Some(i) else None
opt.toList().k()
}
是否可以像前面的示例一样编写函数?
最佳答案
上面@dyukha的答案是最简洁的方法,但是要专门回答您的问题:flatMap
在单个monadic类型中运行;也就是说,如果要在flatMap
上调用List
,则需要从提供给List
的函数中返回flatMap
;如果要在flatMap
上调用Option
,则需要从提供给Option
的函数中返回flatMap
;最接近的代码(不使用.mapFilter()
)是一种返回零或一个元素的List
而不是Some(x)
或None
的方法。
关于kotlin - FlatMapping ListK和Option,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56747148/