我发现使用 orElse 链接 Option 后,元素类型发生了变化,这使我无法按预期使用它。
例如:类型为 .xml 的 xml NodeSeq。
scala> xml1.headOption map { head => None } orElse xml2.lastOption map {last => Some(last)}
res11: Option[Some[ScalaObject with Equals]] = Some(Some(None))
在orElse,之前head是 type Node,这是正确的,但last也应该是 type Node,但编译器认为它是 type ScalaObject with Equals,我不能传递last给以 aNode作为参数的函数。
我可以使用它进行投射last.asInstanceOf[Node],有没有办法避免这种投射并且仍然使用last类型Node?