为什么在整数列表上调用flatMap会失败?

时间:2016-02-29 05:46:34

标签: scala

我有以下代码:

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的列表。

2 个答案:

答案 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)