在尝试使用scala中的Options时,我遇到了这个特殊的问题.
我开始创建List [Option [Int]],如下所示:
scala> List(Some(1),Some(2),None,Some(3))
res0: List[Option[Int]] = List(Some(1), Some(2), None, Some(3))
Run Code Online (Sandbox Code Playgroud)
然后我尝试在res0中列表的条目上映射一个加法,如下所示:
scala> res0 map (_ + 1)
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
<console>:9: error: type mismatch;
found : Int(1)
required: String
res0 map (_ + 1)
^
Run Code Online (Sandbox Code Playgroud)
然后我尝试在条目上添加flatMapping,如下所示:
scala> res0 flatMap (_ + 1)
Run Code Online (Sandbox Code Playgroud)
这给了我同样的错误:
<console>:9: error: type mismatch;
found : Int(1)
required: String
res0 flatMap (_ + 1)
^
Run Code Online (Sandbox Code Playgroud)
但是类似的东西res0.flatMap(r => r)可以很好地结果:
res9: List[Int] = List(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我为什么将地图添加到1会对地图和flatMap都失败吗?
你尝试的前两件事失败了,因为你试图添加Option一个Int,这是不可能的.
发生在怪异的错误消息,因为Scala的假设,因为Option没有一个+方法,您试图String串联,但你必须到任何一个添加Option到一个String或String一个Option,和你正在做的都不是,因此错误信息.
在最后一种情况下,您没有尝试添加任何内容,您只是Option按原样返回,因此没有错误消息.
| 归档时间: |
|
| 查看次数: |
1172 次 |
| 最近记录: |