我有以下代码:
val input: List[Int] = List(1, 2, 3, 4)
我想在其上调用flatMap
,但它要求我传递一个产生String
的函数,即如果我尝试这个:
input.flatMap(x => x + 1)
然后我收到以下错误:
:9:错误:类型不匹配;发现:Int(1)required:String input.flatMap(x => x + 1)
有人可以解释为什么会这样吗?我的原始input
定义中没有字符串,它是Int
的列表。
答案 0 :(得分:4)
您不能以这种方式使用flatMap。 flatMap应该生成GenTraversableOnce,例如:
input.flatMap(x => List(x+1))
如果您只想增加列表中的每个项目,请改用 map 方法
关于所需字符串类型的编译消息非常混乱
答案 1 :(得分:0)
将Option
视为容器,flatMap
我们可以map
容器中的值;请注意
input.flatMap(x => Some(x+1))
List(2, 3, 4, 5)