小编geo*_*lgo的帖子

嵌套集合中Option的奇怪类型擦除

在嵌套集合中有选项时遇到以下奇怪的问题:

val works: Array[Option[Int]] = Array(1)
  .map { t => Some(t)}

val fails: Array[Array[Option[Int]]] = Array(Array(1))
  .map { ts => ts.map { Some(_)} }
// error: type mismatch;  found   : Array[Array[Some[Int]]] required: Array[Array[Option[Int]]]

val worksButUgly: Array[Array[Option[Int]]] = Array(Array(1))
  .map { ts => ts.map { case t => (Some(t).asInstanceOf[Option[Int]])}}
Run Code Online (Sandbox Code Playgroud)

我想这可能是沿途某种类型擦除的问题,但它是否是Scala中的预期行为?有谁知道究竟发生了什么?

scala type-erasure scala-collections

1
推荐指数
1
解决办法
72
查看次数

标签 统计

scala ×1

scala-collections ×1

type-erasure ×1