kotlin - FlatMapping ListK 和选项
问题描述
我不能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
在单一单子类型中运行;也就是说,如果你想调用flatMap
a ,你需要从提供给;的函数List
中返回 a 如果要调用an ,则需要从提供给;的函数中返回 an 等等,等等。最接近的代码(不使用)是一种返回零或一个元素的方法,而不是或。List
flatMap
flatMap
Option
Option
flatMap
.mapFilter()
List
Some(x)
None
推荐阅读
- node.js - 需要澄清 Rest API 响应设计
- android - 使用 Gradle 在 Android Studio 中更改 BuildConfig 文件
- python - 使用字典将参数传递给python中的postgresql语句
- php - $this 如何在 yii2 的布局文件中引用 yii\web\View 类的实例?
- python - 从python中的图像中提取希伯来语文本
- android - 如何通过创建新类别让用户复制我的代码?
- javascript - 对象碰撞条件仅从一侧工作
- docker - 如何制作与我的服务器相同的 docker 容器
- netsuite - Netsuite:在网站注册中为客户创建密码策略
- python - 使用 Python 知道如何在 ftp 位置更新任何文件的方法是什么?