为什么我不能使用下划线对 List[Option] 进行平面映射? [英] Why can I not flatMap a List[Option] using underscore?

查看:33
本文介绍了为什么我不能使用下划线对 List[Option] 进行平面映射?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么我可以写

val flat: List[Int] = List(Some(1), Some(2)).flatMap(i => i)

但不是

val flat: List[Int] = List(Some(1), Some(2)).flatMap(_)

推荐答案

下划线是变量的占位符.它本身并不是一个函数.flatMap 需要一个函数.

The underscore is a placeholder for a variable. It's not, in and of itself, a function. flatMap requires a function.

此外,在这种情况下,有一个 flatten 方法定义在 List 上,OptionPredef 中有 一个隐式转换,这样你写的东西就可以压缩成那个调用,List(Some(1)).flatten

Also, in this case, there is a flatten method which is defined on List for which Option has within the Predef an implicit conversion such that what you've written can be condensed into just that call, List(Some(1)).flatten

这篇关于为什么我不能使用下划线对 List[Option] 进行平面映射?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆