我发现使用 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
?